# Annotation Series - Dermatology Image Annotation FHIR Implementation Guide v0.1.0

* [**Table of Contents**](toc.md)
* [**Artifacts Summary**](artifacts.md)
* **Annotation Series**

## Resource Profile: Annotation Series 

| | |
| :--- | :--- |
| *Official URL*:https://annotatemd.com/fhir/ig/StructureDefinition/annotation-series | *Version*:0.1.0 |
| Draft as of 2026-04-04 | *Computable Name*:AnnotationSeries |

 
Groups dermatology annotations for the same lesion over time. Enables longitudinal tracking and change detection. 

**Usages:**

* Examples for this Profile: [Observation/ExampleAnnotationSeries](Observation-ExampleAnnotationSeries.md)
* CapabilityStatements using this Profile: [Annotate MD Server Capability Statement](CapabilityStatement-annotatemd-server.md)

You can also check for [usages in the FHIR IG Statistics](https://packages2.fhir.org/xig/annotatemd.dermatology-annotation|current/StructureDefinition/annotation-series)

### Formal Views of Profile Content

 [Description of Profiles, Differentials, Snapshots and how the different presentations work](http://build.fhir.org/ig/FHIR/ig-guidance/readingIgs.html#structure-definitions). 

 

Other representations of profile: [CSV](StructureDefinition-annotation-series.csv), [Excel](StructureDefinition-annotation-series.xlsx), [Schematron](StructureDefinition-annotation-series.sch) 



## Resource Content

```json
{
  "resourceType" : "StructureDefinition",
  "id" : "annotation-series",
  "url" : "https://annotatemd.com/fhir/ig/StructureDefinition/annotation-series",
  "version" : "0.1.0",
  "name" : "AnnotationSeries",
  "title" : "Annotation Series",
  "status" : "draft",
  "date" : "2026-04-04T01:37:20+00:00",
  "publisher" : "Annotate MD",
  "contact" : [{
    "name" : "Annotate MD",
    "telecom" : [{
      "system" : "url",
      "value" : "https://annotatemd.com"
    },
    {
      "system" : "email",
      "value" : "fhir@annotatemd.com"
    }]
  }],
  "description" : "Groups dermatology annotations for the same lesion over time. Enables longitudinal tracking and change detection.",
  "jurisdiction" : [{
    "coding" : [{
      "system" : "http://unstats.un.org/unsd/methods/m49/m49.htm",
      "code" : "001",
      "display" : "World"
    }]
  }],
  "fhirVersion" : "4.0.1",
  "mapping" : [{
    "identity" : "workflow",
    "uri" : "http://hl7.org/fhir/workflow",
    "name" : "Workflow Pattern"
  },
  {
    "identity" : "sct-concept",
    "uri" : "http://snomed.info/conceptdomain",
    "name" : "SNOMED CT Concept Domain Binding"
  },
  {
    "identity" : "v2",
    "uri" : "http://hl7.org/v2",
    "name" : "HL7 v2 Mapping"
  },
  {
    "identity" : "rim",
    "uri" : "http://hl7.org/v3",
    "name" : "RIM Mapping"
  },
  {
    "identity" : "w5",
    "uri" : "http://hl7.org/fhir/fivews",
    "name" : "FiveWs Pattern Mapping"
  },
  {
    "identity" : "sct-attr",
    "uri" : "http://snomed.org/attributebinding",
    "name" : "SNOMED CT Attribute Binding"
  }],
  "kind" : "resource",
  "abstract" : false,
  "type" : "Observation",
  "baseDefinition" : "http://hl7.org/fhir/StructureDefinition/Observation",
  "derivation" : "constraint",
  "differential" : {
    "element" : [{
      "id" : "Observation",
      "path" : "Observation"
    },
    {
      "id" : "Observation.meta.profile",
      "path" : "Observation.meta.profile",
      "min" : 1
    },
    {
      "id" : "Observation.status",
      "path" : "Observation.status",
      "patternCode" : "final"
    },
    {
      "id" : "Observation.category",
      "path" : "Observation.category",
      "slicing" : {
        "discriminator" : [{
          "type" : "pattern",
          "path" : "$this"
        }],
        "rules" : "open"
      },
      "min" : 2
    },
    {
      "id" : "Observation.category:imaging",
      "path" : "Observation.category",
      "sliceName" : "imaging",
      "min" : 1,
      "max" : "1",
      "patternCodeableConcept" : {
        "coding" : [{
          "system" : "http://terminology.hl7.org/CodeSystem/observation-category",
          "code" : "imaging"
        }]
      }
    },
    {
      "id" : "Observation.category:dermatologyAnnotation",
      "path" : "Observation.category",
      "sliceName" : "dermatologyAnnotation",
      "min" : 1,
      "max" : "1",
      "patternCodeableConcept" : {
        "coding" : [{
          "system" : "https://annotatemd.com/fhir/ig/CodeSystem/annotation-type",
          "code" : "dermatology-annotation"
        }]
      }
    },
    {
      "id" : "Observation.subject",
      "path" : "Observation.subject",
      "min" : 1,
      "type" : [{
        "code" : "Reference",
        "targetProfile" : ["http://hl7.org/fhir/StructureDefinition/Patient"]
      }]
    },
    {
      "id" : "Observation.performer",
      "path" : "Observation.performer",
      "short" : "SHOULD NOT be populated. Series is system-generated."
    },
    {
      "id" : "Observation.hasMember",
      "path" : "Observation.hasMember",
      "short" : "Consumers MUST sort by effectiveDateTime of referenced observations to reconstruct temporal order.",
      "min" : 2,
      "type" : [{
        "code" : "Reference",
        "targetProfile" : ["https://annotatemd.com/fhir/ig/StructureDefinition/dermatology-image-annotation"]
      }]
    },
    {
      "id" : "Observation.component",
      "path" : "Observation.component",
      "slicing" : {
        "discriminator" : [{
          "type" : "pattern",
          "path" : "code"
        }],
        "rules" : "open"
      },
      "min" : 3
    },
    {
      "id" : "Observation.component:changeDetected",
      "path" : "Observation.component",
      "sliceName" : "changeDetected",
      "min" : 1,
      "max" : "1"
    },
    {
      "id" : "Observation.component:changeDetected.code",
      "path" : "Observation.component.code",
      "patternCodeableConcept" : {
        "coding" : [{
          "system" : "https://annotatemd.com/fhir/ig/CodeSystem/annotation-type",
          "code" : "change-detected"
        }]
      }
    },
    {
      "id" : "Observation.component:changeDetected.value[x]",
      "path" : "Observation.component.value[x]",
      "type" : [{
        "code" : "boolean"
      }]
    },
    {
      "id" : "Observation.component:changeType",
      "path" : "Observation.component",
      "sliceName" : "changeType",
      "min" : 0,
      "max" : "*"
    },
    {
      "id" : "Observation.component:changeType.code",
      "path" : "Observation.component.code",
      "patternCodeableConcept" : {
        "coding" : [{
          "system" : "https://annotatemd.com/fhir/ig/CodeSystem/annotation-type",
          "code" : "change-type"
        }]
      }
    },
    {
      "id" : "Observation.component:changeType.value[x]",
      "path" : "Observation.component.value[x]",
      "type" : [{
        "code" : "CodeableConcept"
      }],
      "binding" : {
        "strength" : "required",
        "valueSet" : "https://annotatemd.com/fhir/ig/ValueSet/change-type"
      }
    },
    {
      "id" : "Observation.component:earliestDate",
      "path" : "Observation.component",
      "sliceName" : "earliestDate",
      "min" : 1,
      "max" : "1"
    },
    {
      "id" : "Observation.component:earliestDate.code",
      "path" : "Observation.component.code",
      "patternCodeableConcept" : {
        "coding" : [{
          "system" : "https://annotatemd.com/fhir/ig/CodeSystem/annotation-type",
          "code" : "earliest-date"
        }]
      }
    },
    {
      "id" : "Observation.component:earliestDate.value[x]",
      "path" : "Observation.component.value[x]",
      "type" : [{
        "code" : "dateTime"
      }]
    },
    {
      "id" : "Observation.component:latestDate",
      "path" : "Observation.component",
      "sliceName" : "latestDate",
      "min" : 1,
      "max" : "1"
    },
    {
      "id" : "Observation.component:latestDate.code",
      "path" : "Observation.component.code",
      "patternCodeableConcept" : {
        "coding" : [{
          "system" : "https://annotatemd.com/fhir/ig/CodeSystem/annotation-type",
          "code" : "latest-date"
        }]
      }
    },
    {
      "id" : "Observation.component:latestDate.value[x]",
      "path" : "Observation.component.value[x]",
      "type" : [{
        "code" : "dateTime"
      }]
    }]
  }
}

```
