Skip to navigation

Diagnostic Links

View as Markdown

Overview

When a clinician evaluates a patient, the process follows a pattern: gather information about the patient’s history and current symptoms, complete a physical exam, weigh the findings against a list of possible diagnoses, and arrive at the diagnosis or diagnoses for the visit. The next question: what to do about the problem. That may involve medications, lab tests, imaging, patient education or counseling. That is a lot of cognitive processing every 10-15 minutes in an outpatient setting, or while managing multiple patients at once in an inpatient setting.

Quippe supports this thought process with computable diagnostic links: structured relationships between a diagnosis and every clinical concept associated with it.

For any diagnosis, Quippe can return the full list of relevant symptoms, history, exam, tests, procedures, medications, imaging studies, and education or counseling topics, as well as other related diagnoses. This relationship works in both directions: given a diagnosis or problem, Quippe returns its related clinical concepts; given a clinical concept, Quippe returns the diagnoses it belongs to.

This list computable list of related concepts is useful at multiple points in a patient encounter. In the clinical workflow, diagnostic links support:

Examples:

  • A clinician needs a list of key concepts for progeria, a rare disease they haven’t seen since medical school.
  • A medication appears in a patient’s chart and the clinician needs to know which diagnosis it’s tied to.
  • Before a visit, a clinician wants to review the patient’s chart but skip the noise and surface only what is related to the patient’s primary problem.

Overview

Diagnostic links show up anywhere a diagnosis needs to be connected to the clinical concepts around it. That might be building a note in real time, reviewing a patient’s chart before a visit, checking an ambient summary for errors, or confirming a note meets clinical documentation requirements. The four use cases below walk through how the diagnostic links in Quippe’s Clinical Knowledge Graph support each of these points in the clinical workflow:


Assisting with Documentation and Completeness

Consider an outpatient visit in which a patient reports shortness of breath, cough, wheezing, weakness, and a history of smoking. You may already suspect a respiratory condition, such as bronchitis or COPD, and need a focused list of related clinical concepts to support documentation. Quippe uses the data points associated with a specific diagnosis to present relevant concepts describing the patient’s current condition — no need to search manually or create a separate template for every diagnosis.

Sample of the Links to Acute Bronchitis (MEDCIN ID 32890)

Quippe UI

In the Quippe UI, add any diagnosis to the note via the search. On the entered finding, right click and select DX Prompt.

Diangostic Prompt - Acute Bronchitis

The concepts related to the selected diagnosis are added to the note, ready for documentation.

Acute Bronchitis Prompt Result In cases where a generic diagnosis is selected, the returned list may be only diagnoses (term type 6), meaning the initial diagnosis is too broad to be helpful. In these cases, you will be asked to select a more specific diagnosis to present a more useable list of findings.

Example: Congestive heart failure (MEDCIN ID 33268) is too broad and a more specific diagnosis is needed in order to add related concepts to the note.

Diagnostic Prompt - CHF

Quippe API

The /Quippe/NoteBuilder/QuickPrompt API returns the concepts related to a diagnosis using the associated medcinId along with any optional parameters.

Documentation: GET /Quippe/NoteBuilder/QuickPrompt

Parameters:

  • MedcinId: 32890
    • This is the MEDCIN ID for acute bronchitis
  • ListSize: small

Sample Results:

The code snippet below shows a sample of the output.

{
"list": {
"id": "IPrompt_32890_1_0",
"medcinId": 32890,
"type": "list",
"text": "Acute Bronchitis",
"listType": "Prompt",
"count": 154,
"item": [
{
"type": "term",
"medcinId": 283159,
"nodeKey": "-A-NCF",
"termType": 1,
"text": "medication reconciliation performed",
"specialty": "*",
"sectionId": "S16",
"groupId": "G2900",
"phrasing": {
"ip": "medication reconciliation performed",
"in": "~2.0 not"
}
},
{
"type": "term",
"medcinId": 7,
"nodeKey": "-A-RGL",
"termType": 1,
"text": "chills [as a symptom]",
"subs": "+",
"specialty": "I",
"sectionId": "S16",
"groupId": "G1878",
"phrasing": {
"ip": "chills",
"in": "~< no",
"startContext": "-A-RGL"
}
},
{
"type": "term",
"medcinId": 281327,
"nodeKey": "-AAJGOIH-J",
"termType": 1,
"text": "chest pain made worse by breathing",
"specialty": "CIOPA",
"sectionId": "S16",
"groupId": "G1881",
"phrasing": {
"ctnk": "-AAJGOIH",
"ip": "chest pain ~L worsened by breathing",
"in": "~2.1 not",
"dp": "~L by breathing",
"dn": "~0.1 not"
}
},
{
"type": "term",
"medcinId": 281328,
"nodeKey": "-AAJGOIH-R",
"termType": 1,
"text": "chest pain made worse by coughing",
"subs": "+",
"specialty": "CIOPA",
"sectionId": "S16",
"groupId": "G1881",
"phrasing": {
"ctnk": "-AAJGOIH",
"ip": "chest pain ~L worsened by coughing",
"in": "~2.1 not",
"dp": "~L by coughing",
"dn": "~0.1 not"
}
},
{
"type": "term",
"medcinId": 353,
"nodeKey": "-AALDD",
"termType": 1,
"text": "difficulty breathing (dyspnea)",
"subs": "+",
"specialty": "CIOP",
"sectionId": "S16",
"groupId": "G1880",
"phrasing": {
"ip": "difficulty breathing",
"in": "~< no",
"startContext": "-AALDD"
}
}
]
}
}


Identifying Relevant Clinical Concepts in a Patient Chart

With the onslaught of data in a patient’s chart, it is difficult and time-consuming for a clinician to find relevant information. The patient is here for a diabetes follow-up. Quickly identifying the current state of the disease means knowing the most recent A1C or glucose level, and which medications the patient is taking.

The clinician requires a quick snapshot of the items relevant to diabetes and does not need to worry about the cold the patient had last year. Using Quippe’s diagnostic links, the clinician can filter the chart to see just the clinical concepts related to the patient’s diabetes.

Diabetes Type 2 Problem Focused View of the Chart

Acute Bronchitis Problem Focused View of the Chart

Quippe UI

To try this yourself, open Clinical Lens and select Seymour Patients - he has a more complete sample chart. Clinical Lens provides a summary of the patient’s chart. The first tab includes the most recent instance of Seymour’s active problems. To view the findings related to a specific diagnosis or problem, simply click on one in the Filter by Problem task pane on the right side of the window. The related findings will be highlighted in yellow.

Example view of diabetes mellitus type 2 (MEDCIN ID 30480) for Seymour Patients:

Clinical Lens

Quippe APIs

There are multiple steps in this process. One to retrieve the list of concepts related to the selected diagnosis and their node keys, and one to identify findings in the chart that have similar node keys. A node key defines a concept’s place in the MEDCIN hierarchy. With the node key, we can identify (and then highlight) all the findings that start with that same node key.

For example, blood hemoglobin A1C (MEDCIN ID 12736) is related to type 2 diabetes. Its node key is -DDD-P-E-E. When looking through the patient’s chart to find concepts related to diabetes type 2, we will highlight all concepts that start with this node key. This would include not only blood hemoglobin A1C, but also its subordinate/child concepts. This ensures that all A1C concepts are identified.

Concepts that start with Node Key -DDD-P-E-E


Step 1: Identify the node keys of the concepts related to the selected disease

In this use case, we want to identify findings related to a single diagnosis, or sourceId, of diabetes mellitus, type 2 using its MEDCIN ID 30480. Use the /Quippe/ClinicalLens/Prompt API to return a list of concept node keys related to a MEDCIN sourceId.

Documentation: GET /Quippe/ClinicalLens/Prompt

Parameters:

  • SourceId: 30480
    • This is the MEDCIN ID for diabetes mellitus type 2
  • SourceType: term
  • ListSize: medListSmall

Sample Results:

Partial list of the associated node keys for this SourceId.

{
"list": {
"sourceId": 30480,
"count": 135,
"keys": [
"-A-REX-H",
"-A-RIT-D-D",
"-A-RIT-D-H",
"-AAA-L",
"-AAD-NCN",
"-AAF-PPD",
"-AAN-H-H-I",
"-AAP-JBL-D-P-H",
"-AAP-JBL-D-T",
"-AAR-F",
"-AAVTNCN-C-Q-N",
"-AAY-C-D",
"-AAYEP-RBH-H",
"-B-L-N-H-L",
"-B-L-N-H-P",
"-B-L-XMX-H",
"-B-L-XTJ-P",
"-B-L-XTN-P",
"-B-S-F-P-J-H-F",
"-B-SEL-L-H-C",
"-C-I-H",
"-C-I-P",
"-C-I-T",
"-C-IAA-F",
"-C-IAA-H",
"-C-K-D",
"-C-K-L",
"-C-UBNAN",
"-C-UDD-L",
"-C-UDDAPAW",
"-C-UDDAPBA",
"-C-UDDBH",
"-C-X-L-H-B",
"-CAZ-G-N",
"-CBA-J-H-D-U",
"-CBABT-L-BRD",
"-CBABT-L-BRH",
"-CBABT-L-BTD",
"-CBABT-L-BTH",
"-CBABTED",
"-CCWRD",
"-CDAAD-B",
"-CDAAD-GBP"
]
}
}

Step 2: Gather node keys of the findings in the patient’s chart

The /Quippe/NoteBuilder/ResolveTerms API returns the nodeKey for each MEDCIN ID.

Documentation: GET /Quippe/NoteBuilder/ResolveTerms

Parameters:

  • MedcinIds: pass in all the MEDCIN IDs from the patient’s chart.

Sample Results:

Partial list of the findings in the patient chart. One of the properties provided for each medcinId is the nodeKey.

{
"list": {
"type": "list",
"listType": "Prompt",
"item": [
{
"medcinId": 5,
"nodeKey": "-A-RGH",
"termType": 1,
"subs": "+",
"specialty": "I",
"text": "fever [as symptom]",
"sectionId": "S16",
"groupId": "G1878",
"hasHistory": true,
"phrasing": {
"ip": "fever",
"in": "~< no",
"startContext": "-A-RGH"
}
},
{
"medcinId": 10,
"nodeKey": "-AAA-L",
"termType": 1,
"subs": "+",
"specialty": "N",
"text": "headache",
"sectionId": "S16",
"groupId": "G1879",
"hasHistory": true,
"phrasing": {
"ip": "headache",
"in": "~< no",
"startContext": "-AAA-L"
}
},
{
"medcinId": 134,
"nodeKey": "-AAD-N-DED",
"termType": 1,
"specialty": "CNV",
"text": "eye strain (asthenopia)",
"sectionId": "S16",
"groupId": "G2901",
"hasHistory": true,
"phrasing": {
"ctnk": "-AAD-N-D",
"ip": "eye strain",
"in": "~< no"
}
},
{
"medcinId": 141,
"nodeKey": "-AAF-DBY",
"termType": 1,
"subs": "+",
"specialty": "TINOP",
"text": "loss of hearing",
"sectionId": "S16",
"groupId": "G2902",
"hasHistory": true,
"phrasing": {
"ctnk": "-AAF-D",
"ip": "hearing loss",
"in": "~< no",
"startContext": "-AAF-DBY"
}
},
{
"medcinId": 147,
"nodeKey": "-AAF-DED",
"termType": 1,
"subs": "+",
"specialty": "TNOBP",
"text": "earache",
"sectionId": "S16",
"groupId": "G2902",
"hasHistory": true,
"phrasing": {
"ctnk": "-AAF-D",
"ip": "earache",
"in": "~< no",
"startContext": "-AAF-DED"
}
},
{
"medcinId": 162,
"nodeKey": "-AAF-HHR",
"termType": 1,
"subs": "+",
"specialty": "TP",
"text": "nasal discharge",
"sectionId": "S16",
"groupId": "G2902",
"hasHistory": true,
"phrasing": {
"ctnk": "-AAF-H",
"ip": "nasal discharge",
"in": "~< no",
"dp": "discharge",
"dn": "~< no",
"startContext": "-AAF-HHR"
}
},
{
"medcinId": 207,
"nodeKey": "-AAR-F",
"termType": 1,
"subs": "+",
"specialty": "CEV",
"text": "excessive thirst / fluid intake (polydipsia)",
"sectionId": "S16",
"groupId": "G1887",
"hasHistory": true,
"phrasing": {
"ip": "polydipsia",
"in": "~< no",
"startContext": "-AAR-F"
}
},
{
"medcinId": 217,
"nodeKey": "-AAF-L-H",
"termType": 1,
"subs": "+",
"specialty": "ETOP",
"text": "hoarseness",
"sectionId": "S16",
"groupId": "G2902",
"hasHistory": true,
"phrasing": {
"ctnk": "-AAF-L",
"ip": "hoarseness",
"in": "~< no",
"startContext": "-AAF-L-H"
}
}
]
}
}

Step 3: Compare the node keys in the patient chart with the node keys from the findings related to type 2 diabetes

There is no specific Quippe API to accomplish this simple comparison. If a chart finding node key starts with any of the node keys in the diagnosis list, then it is related to the diagnosis. In JavaScript, this might looks something like:

chartFindings.filter(f => {
return diagnosisNodeKeys.some(k => f.nodeKey.startsWith(k));
})


Guiderails for Ambient Listening

The trend in EHR documentation now is to use ambient listening to capture the transcript of a conversation between a clinician and a patient and then translate it to a text clinical note. The unknown in this equation is the accuracy - did the tool capture the conversation and subsequent clinical concepts correctly? Did it correctly distinguish a family history of breast cancer from the patient’s own history?

With the Quippe APIs, that clinical text note can be translated into structured MEDCIN findings. Once you have the structured clinical data points, the diagnostic links can be used to validate the accuracy of the note. Say the note includes diabetes and acute bronchitis as the diagnoses. The links can be used to verify that the other clinical data points in the note are associated with one of the diagnoses and alert the clinician of the outliers. If biopsy showed Bowen’s disease turned up in the note because the patient’s last name is Bowen, the clinician would be alerted and could easily remove the finding.

Quippe UI

Note Outliers

Quippe APIs

The /Quippe/ChartReview/ScoreNote API identifies which findings in the note are related to a documented diagnosis finding.

Documentation: POST /Quippe/ChartReview/ScoreNote

Parameters:

Example XML Input:

<Chart xmlns="http://schemas.medicomp.com/V3/Chart.xsd">
<Patient id="17095000" Sex="M" Race="H" BirthDate="1970-02-01T00:00:00.000">
<Encounters>
<Encounter EncounterTime="2026-07-27T19:16:00.000Z" id="CURRENT" Description="Basic Note_CT">
<Records>
<Record id="Q1" MedcinId="32998" Result="A" Text="emphysema">
<CodeMaps>
<Map Vocab="icd10" Code="J43.9" Description="Emphysema, unspecified" AutoMapped="true" />
</CodeMaps>
</Record>
<Record id="Q5" MedcinId="5" Result="A" Text="fever" />
<Record id="Q6" MedcinId="71911" Prefix="O" Result="A" Text="metformin HCl" />
<Record id="Q2" MedcinId="41470" Prefix="O" Result="A" Text="albuterol" />
<Record id="Q3" MedcinId="12194" Prefix="O" Result="A" Text="ABG panel" />
<Record id="Q4" MedcinId="105598" Prefix="O" Result="A" Unit="%" Text="oxygen saturation" RangeNormalLow="93" RangeNormalHigh="100" />
</Records>
</Encounter>
</Encounters>
</Patient>
</Chart>

Sample Results:

In this example, emphysema is the documented diagnosis. The related entries are Q1 (emphysema), Q2 (albuterol), Q3 (ABG panel), and Q4 (oxygen saturation), while Q5 (fever) and Q6 (metformin) are not related to emphysema.

{
"noteScores": [
{
"medcinId": 32998,
"text": "emphysema",
"score": 1,
"targetIds": "Q1,Q2,Q3,Q4"
}
]
}


Compliance and Regulation

Diagnostic links also help satisfy documentation compliance requirements. For example, E&M or HCC claims require that the note contain an appropriate history and physical. What does that mean and how does a clinician know if their note is compliant?

Quippe uses the diagnostic links along with coding guidelines to provide the clinician with a level of confidence that their note is compliant, at the point of care. If it is not, the diagnostic links can suggest related clinical concepts to add to the note to ensure completeness. This group of APIs is the Documentation Scoring capability.

Indications of Note Completeness

Quippe UI

The easiest way to see this in action is to add a diagnosis and some documentation to a note. The Documentation Scoring task pane is visible by default. If it is not visible, click the Settings icon in the bottom right of the window and select Documentation Scoring.

Once a diagnosis has been entered into the note (marked red, positive), it is scored and displayed in the task pane.

  • Score 1 - Hazard sign with exclamation mark: The note does not support the diagnosis.
  • Score 2 - Question mark: The note may or may not support the diagnosis.
  • Score 3 - Green checkmark: The note is not incomplete.

See Documentation Scoring to learn more.

Quippe APIs

The /Quippe/ChartReview/ScoreNote API identifies findings in a note related to a documented diagnosis medcinId, and returns a score indicating whether or not those findings satisfy the documentation scoring algorithm.

Documentation: POST /Quippe/ChartReview/ScoreNote

Parameters:

Example XML Input with findings from a note:

<Chart xmlns="http://schemas.medicomp.com/V3/Chart.xsd">
<Patient id="150290" Sex="M" BirthDate="1960-05-19T00:00:00.000">
<Encounters>
<Encounter EncounterTime="2026-06-22T20:30:00.000Z" id="CURRENT" Description="Basic Note_CT">
<Records>
<Record id="Q7" MedcinId="390" Result="A" Unit="lbs" Text="recent weight loss" />
<Record id="Q4" MedcinId="10" Result="A" Text="headache" />
<Record id="Q5" MedcinId="113" Result="N" Text="no blurry vision" />
<Record id="Q8" MedcinId="392" Result="A" Text="increased appetite" />
<Record id="Q6" MedcinId="549" Result="A" Text="nocturia" />
<Record id="Q9" MedcinId="303099" Result="N" Text="no dilated retinal eye exam" />
<Record id="Q10" MedcinId="206255" Result="A" Text="tachycardia by auscultation" />
<Record id="Q2" MedcinId="296219" Result="A" Text="decreased sensation on monofilament wire test of foot" />
<Record id="Q3" MedcinId="163501" Result="A" Unit="cm" Text="ulcer on feet" />
<Record id="Q1" MedcinId="30480" Result="A" Text="type 2 diabetes mellitus" />
<Record id="Q38" MedcinId="194714" Prefix="O" Result="A" Text="sulfonylureas" />
</Records>
</Encounter>
</Encounters>
</Patient>
</Chart>

Sample Results:

The score of 2 indicates the related concepts, or targetIds, in the documentation may or may not support the diagnosis of type 2 diabetes mellitus.

{
"noteScores": [
{
"medcinId": 30480,
"text": "type 2 diabetes mellitus",
"score": 2,
"targetIds": "Q7,Q4,Q5,Q8,Q6,Q9,Q10,Q2,Q3,Q1,Q38"
}
]
}

FAQ

What are diagnostic links in Quippe?

Diagnostic links are the evidence-based, expert curated relationships in the Quippe Clinical Knowledge Graph that connect a diagnosis to every clinical concept associated with it - including symptoms, history, physical exam findings, tests, procedures, medications, imaging studies, and education or counseling topics, as well as other related diagnoses.


How are diagnostic links used in clinical workflow?

Quippe’s computable diagnostic links support documentation (surfacing relevant concepts while writing a note), chart review (filtering a patient’s chart to find what is relevant today), ambient listening validation (flagging note findings that don’t match the stated diagnosis), and compliance (checking whether a note meets documentation requirements).


Which terminology do diagnostic links use, and how does that affect billing?

Diagnostic links are built on the MEDCIN clinical terminology, which maps to reference terminologies including ICD-10, CPT, LOINC, RxNorm,SNOMED CT, and DSM-5, so concepts identified through diagnostic links are already aligned to the codes needed for billing, reporting, and compliance.


Resources

Help Library > End Users:

API Documentation: