XooCode(){

MedicalSignOrSymptom

MedicalSignOrSymptom is a MedicalCondition subtype for clinical findings: signs (objective, observed by a clinician) and symptoms (subjective, reported by the patient). It adds 1 direct property:

  • possibleTreatment (Drug, DrugClass, LifestyleModification, or MedicalTherapy): treatments commonly applied for the sign or symptom.

Because it inherits from MedicalCondition, it also carries the full condition vocabulary: cause, differentialDiagnosis, typicalTest, signOrSymptom, riskFactor, and the diagnostic / prognostic properties.

Full example of schema.org/MedicalSignOrSymptom json-ld markup

The markup is verified as valid with Rich Results Test from Google.

Highlight legend:Required by GoogleRecommendedOptional
schema.org/MedicalSignOrSymptom
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "MedicalSignOrSymptom",
  "name": "Polyuria",
  "alternateName": "Excessive urination",
  "description": "Production of abnormally large volumes of dilute urine (typically more than 3 litres per day in adults). Common early symptom of poorly controlled diabetes mellitus and a range of renal and endocrine disorders.",
  "cause": [
    { "@type": "MedicalCause", "name": "Hyperglycaemia (osmotic diuresis)" },
    { "@type": "MedicalCause", "name": "Diabetes insipidus" },
    { "@type": "MedicalCause", "name": "Excessive fluid intake" }
  ],
  "typicalTest": [
    { "@type": "MedicalTest", "name": "Hemoglobin A1c", "@id": "https://dunmoreregional.example/tests/hba1c" },
    { "@type": "MedicalTest", "name": "Fasting plasma glucose" },
    { "@type": "MedicalTest", "name": "Urine specific gravity" }
  ],
  "possibleTreatment": [
    { "@type": "MedicalTherapy", "name": "Treat underlying cause (glycaemic control, fluid restriction, hormone replacement)" },
    { "@type": "LifestyleModification", "name": "Time fluid intake away from bedtime" }
  ],
  "code": [
    { "@type": "MedicalCode", "codeValue": "R35.8", "codingSystem": "ICD-10" },
    { "@type": "MedicalCode", "codeValue": "162247003", "codingSystem": "SNOMED CT" }
  ],
  "relevantSpecialty": ["https://schema.org/Endocrine", "https://schema.org/PrimaryCare"]
}
</script>

Sign vs symptom

Schema.org has a sibling type, MedicalSign, specifically for objective findings; you can use either MedicalSignOrSymptom (the parent) or MedicalSign (more specific) when the finding is objective. For patient-reported symptoms, MedicalSignOrSymptom is the canonical choice.

Where it fits

Patient-education pages (symptom checkers, condition explainers) get the highest value from MedicalSignOrSymptom markup. AI healthcare assistants reading symptom-search content collapse signs and symptoms onto their parent conditions and diagnostic tests through the typed graph.

Minimal valid version

The smallest markup that still produces a valid MedicalSignOrSymptom entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.

schema.org/MedicalSignOrSymptom (minimal)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "MedicalSignOrSymptom",
  "name": "Polyuria",
  "description": "Production of abnormally large volumes of dilute urine.",
  "typicalTest": { "@type": "MedicalTest", "name": "Hemoglobin A1c" }
}
</script>

Google rich results this unlocks

Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.

  • No dedicated rich result (used by symptom-search and AI healthcare assistants)
    Google docs

Common MedicalSignOrSymptom mistakes

Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.

  1. 01

    Symptom modelled as a MedicalCondition

    Wrong
    MedicalCondition on a symptom like 'fatigue' or 'headache'
    Right
    MedicalSignOrSymptom for findings; MedicalCondition for the underlying disease

    Symptom-vs-condition is a meaningful clinical distinction. Symptom-search consumers expect MedicalSignOrSymptom and surface the condition through the symptom's typicalTest / cause graph.

  2. 02

    Missing typicalTest and cause

    Wrong
    Bare MedicalSignOrSymptom with name and description only
    Right
    Always populate typicalTest and cause to make the symptom navigable

    The graph value comes from the links: a symptom's tests and causes let consumers traverse from a search query into the diagnostic workup.

  3. 03

    possibleTreatment as free text

    Wrong
    "possibleTreatment": "Treat underlying cause"
    Right
    Typed MedicalTherapy / Drug / LifestyleModification objects with name

    Strings short-circuit the typed treatment vocabulary; drug and therapy graphs cannot match them.

About the example data

Polyuria (excessive urination) as a symptom of new-onset Type 2 diabetes, used on Dunmore Family Clinic's diabetes patient-education pages.

Comments

Loading comments...

Leave a comment