# DAPL Diagnosis - De-identified, Anonymized FHIR Profiles Library v1.0.0-ballot

* [**Table of Contents**](toc.md)
* [**Artifacts Summary**](artifacts.md)
* **DAPL Diagnosis**

## Resource Profile: DAPL Diagnosis 

| | | |
| :--- | :--- | :--- |
| *Official URL*:http://hl7.org/fhir/us/dapl/StructureDefinition/dapl-diagnosis | *Version*:1.0.0-ballot | |
| * Standards status: *[Trial-use](http://hl7.org/fhir/R4/versions.html#std-process) | [Maturity Level](http://hl7.org/fhir/versions.html#maturity): 2 | *Computable Name*:DAPLDiagnosis |

 
The profile establishes the core elements, extensions, vocabularies and value sets for representing deidentified or anonymized Diagnosis. 

### Introduction

This profile is used to represent de-identified diagnosis information. The de-identification process has to remove all data elements not explicitly identified as "SUPPORTED" in the profile.

The [HHS De-identification Guidance](https://www.hhs.gov/sites/default/files/ocr/privacy/hipaa/understanding/coveredentities/De-identification/hhs_deid_guidance.pdf) is to be followed to ensure appropriate level of de-identification is performed.

According to the HHS guidance, dates should not have a precision of more than the year. This means month and day cannot be included. This includes diagnosis dates, visit dates, onset dates etc.

In FHIR Resources, text elements and reference.display elements which provide human readable information to the providers may be generated using programs and tools from the data present within the resource. For e.g a Condition resource text element may contain information such as the visit date, onset date. This type of information will enable identification of the individuals. In order to avoid inadvertent revealing of PII/PHI, text elements cannot be included in the De-identified FHIR resource and the submission will be rejected when text elements are present by the validation process.

**Ids and References**

The original Condition resource id should not be included in the De-identified condition instance. Instead a new id should be created and provided as part of the FHIR resource. This Data Submitter should be capable of using the generated id to relink the data to the original Condition. All resource references to the Condition submitted as part of the data exchange should refer to newly generated id.

Resource references cannot contain text element as it may contain PHI/PII. The text element for following references are not allowed

* subject
* encounter

**Date Truncation**

The DARTS Service Provider has to truncate the following dates to only have a precision of year

* onsetDate
* abatementDate
* recordedDate

**Examples**

Examples of identifiable data and its corresponding de-identifiable data are present in the [FHIR Artifacts examples](artifacts.md)

**Usages:**

* Refer to this Profile: [DAPL De-identified Encounter](StructureDefinition-dapl-deidentified-encounter.md)
* Examples for this Profile: [Condition/de-identified-example](Condition-de-identified-example.md)

You can also check for [usages in the FHIR IG Statistics](https://packages2.fhir.org/xig/hl7.fhir.us.dapl|current/StructureDefinition/dapl-diagnosis)

### 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-dapl-diagnosis.csv), [Excel](StructureDefinition-dapl-diagnosis.xlsx), [Schematron](StructureDefinition-dapl-diagnosis.sch) 



## Resource Content

```json
{
  "resourceType" : "StructureDefinition",
  "id" : "dapl-diagnosis",
  "meta" : {
    "versionId" : "1",
    "lastUpdated" : "2026-03-27T02:03:11.293+00:00"
  },
  "extension" : [{
    "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg",
    "valueCode" : "cgp"
  },
  {
    "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm",
    "valueInteger" : 2,
    "_valueInteger" : {
      "extension" : [{
        "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-conformance-derivedFrom",
        "valueCanonical" : "http://hl7.org/fhir/us/dapl/ImplementationGuide/dapl"
      }]
    }
  },
  {
    "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status",
    "valueCode" : "trial-use",
    "_valueCode" : {
      "extension" : [{
        "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-conformance-derivedFrom",
        "valueCanonical" : "http://hl7.org/fhir/us/dapl/ImplementationGuide/dapl"
      }]
    }
  }],
  "url" : "http://hl7.org/fhir/us/dapl/StructureDefinition/dapl-diagnosis",
  "version" : "1.0.0-ballot",
  "name" : "DAPLDiagnosis",
  "title" : "DAPL Diagnosis",
  "status" : "active",
  "experimental" : false,
  "date" : "2026-05-08T05:01:52+10:00",
  "publisher" : "HL7 International / Cross-Group Projects",
  "contact" : [{
    "telecom" : [{
      "system" : "url",
      "value" : "http://www.hl7.org/Special/committees/cgp"
    }]
  }],
  "description" : "The profile establishes the core elements, extensions, vocabularies and value sets for representing deidentified or anonymized Diagnosis.",
  "jurisdiction" : [{
    "coding" : [{
      "system" : "urn:iso:std:iso:3166",
      "code" : "US"
    }]
  }],
  "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" : "Condition",
  "baseDefinition" : "http://hl7.org/fhir/StructureDefinition/Condition",
  "derivation" : "constraint",
  "differential" : {
    "element" : [{
      "id" : "Condition",
      "path" : "Condition",
      "short" : "DAPL Diagnosis",
      "definition" : "The profile establishes the core elements, extensions, vocabularies and value sets for representing deidentified or anonymized Diagnosis."
    },
    {
      "id" : "Condition.id",
      "path" : "Condition.id",
      "short" : "The Condition identifier generated by DARTS deidentification or anonymization service",
      "definition" : "DAPL resource identifier.",
      "mustSupport" : true
    },
    {
      "id" : "Condition.text",
      "path" : "Condition.text",
      "short" : "Cannot include any text in the resource as part of the deidentified or anonymized data.",
      "min" : 0,
      "max" : "0",
      "mustSupport" : false
    },
    {
      "id" : "Condition.contained",
      "path" : "Condition.contained",
      "short" : "Cannot include any contained resources in the resource as part of the deidentified or anonymized data.",
      "min" : 0,
      "max" : "0",
      "mustSupport" : false
    },
    {
      "id" : "Condition.extension:dapl-age-extension",
      "path" : "Condition.extension",
      "sliceName" : "dapl-age-extension",
      "short" : "Age of the Patient computed using birthDate.",
      "min" : 0,
      "max" : "1",
      "type" : [{
        "code" : "Extension",
        "profile" : ["http://hl7.org/fhir/us/dapl/StructureDefinition/dapl-age-extension"]
      }],
      "mustSupport" : true
    },
    {
      "id" : "Condition.extension:assertedDate",
      "path" : "Condition.extension",
      "sliceName" : "assertedDate",
      "min" : 0,
      "max" : "1",
      "type" : [{
        "code" : "Extension",
        "profile" : ["http://hl7.org/fhir/StructureDefinition/condition-assertedDate|5.2.0"]
      }],
      "constraint" : [{
        "key" : "dapl-diag-1",
        "severity" : "error",
        "human" : "All dateTime data elements should be truncated to a year only for de-identified resources.",
        "expression" : "$this.value.ofType(dateTime) implies $this.value.ofType(dateTime).toString().length() = 4"
      },
      {
        "key" : "dapl-diag-1a",
        "severity" : "error",
        "human" : "All dateTime data elements should have valid year > 1900",
        "expression" : "$this.value.ofType(dateTime) implies $this.value.ofType(dateTime).toString() >= '1900'"
      }],
      "mustSupport" : true
    },
    {
      "id" : "Condition.clinicalStatus",
      "path" : "Condition.clinicalStatus",
      "min" : 0,
      "max" : "1",
      "mustSupport" : true
    },
    {
      "id" : "Condition.verificationStatus",
      "path" : "Condition.verificationStatus",
      "min" : 0,
      "max" : "1",
      "mustSupport" : true
    },
    {
      "id" : "Condition.category",
      "path" : "Condition.category",
      "min" : 1,
      "max" : "1",
      "mustSupport" : true
    },
    {
      "id" : "Condition.code",
      "path" : "Condition.code",
      "min" : 1,
      "max" : "1",
      "mustSupport" : true,
      "binding" : {
        "strength" : "extensible",
        "description" : "The set of codes indicating the diagnosis",
        "valueSet" : "http://hl7.org/fhir/us/core/ValueSet/us-core-condition-code"
      }
    },
    {
      "id" : "Condition.subject",
      "path" : "Condition.subject",
      "min" : 1,
      "max" : "1",
      "type" : [{
        "code" : "Reference",
        "targetProfile" : ["http://hl7.org/fhir/us/dapl/StructureDefinition/dapl-deidentified-patient"]
      }],
      "mustSupport" : true
    },
    {
      "id" : "Condition.subject.display",
      "path" : "Condition.subject.display",
      "min" : 0,
      "max" : "0",
      "mustSupport" : false
    },
    {
      "id" : "Condition.encounter",
      "path" : "Condition.encounter",
      "min" : 0,
      "max" : "1",
      "type" : [{
        "code" : "Reference",
        "targetProfile" : ["http://hl7.org/fhir/us/dapl/StructureDefinition/dapl-deidentified-encounter"]
      }],
      "mustSupport" : true
    },
    {
      "id" : "Condition.encounter.display",
      "path" : "Condition.encounter.display",
      "min" : 0,
      "max" : "0",
      "mustSupport" : false
    },
    {
      "id" : "Condition.onset[x]",
      "path" : "Condition.onset[x]",
      "min" : 0,
      "max" : "1",
      "type" : [{
        "extension" : [{
          "url" : "http://hl7.org/fhir/StructureDefinition/elementdefinition-type-must-support",
          "valueBoolean" : true
        }],
        "code" : "dateTime"
      },
      {
        "code" : "Period"
      }],
      "constraint" : [{
        "key" : "dapl-diag-2",
        "severity" : "error",
        "human" : "All dateTime data elements should be truncated to a year only for de-identified resources.",
        "expression" : "$this is DateTime implies $this.toString().length() = 4"
      },
      {
        "key" : "dapl-diag-2a",
        "severity" : "error",
        "human" : "All dateTime data elements should have valid year > 1900",
        "expression" : "$this is DateTime implies $this.toString() >= '1900'"
      },
      {
        "key" : "dapl-diag-3",
        "severity" : "error",
        "human" : "All Period.start data elements should be truncated to a year only for de-identified resources.",
        "expression" : "$this is Period and Period.start.exists() implies $this.start.toString().length() = 4"
      },
      {
        "key" : "dapl-diag-3a",
        "severity" : "error",
        "human" : "All Period.start data elements should have valid year > 1900",
        "expression" : "$this is Period and Period.start.exists() implies $this.start.toString() >= '1900'"
      },
      {
        "key" : "dapl-diag-4",
        "severity" : "error",
        "human" : "All Period.emd data elements should be truncated to a year only for de-identified resources.",
        "expression" : "$this is Period and Period.end.exists() implies $this.end.toString().length() = 4"
      },
      {
        "key" : "dapls-diag-4a",
        "severity" : "error",
        "human" : "All Period.start data elements should have valid year > 1900",
        "expression" : "$this is Period and Period.end.exists() implies $this.end.toString() >= '1900'"
      }],
      "mustSupport" : true
    },
    {
      "id" : "Condition.abatement[x]",
      "path" : "Condition.abatement[x]",
      "min" : 0,
      "max" : "1",
      "type" : [{
        "code" : "dateTime"
      },
      {
        "code" : "Period"
      }],
      "constraint" : [{
        "key" : "dapl-diag-5",
        "severity" : "error",
        "human" : "All dateTime data elements should be truncated to a year only for de-identified resources.",
        "expression" : "$this is DateTime implies $this.toString().length() = 4"
      },
      {
        "key" : "dapl-diag-5a",
        "severity" : "error",
        "human" : "All dateTime data elements should have valid year > 1900",
        "expression" : "$this is DateTime implies $this.toString() >= '1900'"
      },
      {
        "key" : "dapl-diag-6",
        "severity" : "error",
        "human" : "All Period.start data elements should be truncated to a year only for de-identified resources.",
        "expression" : "$this is Period and Period.start.exists() implies $this.start.toString().length() = 4"
      },
      {
        "key" : "dapl-diag-6a",
        "severity" : "error",
        "human" : "All Period.start data elements should have valid year > 1900",
        "expression" : "$this is Period and Period.start.exists() implies $this.start.toString() >= '1900'"
      },
      {
        "key" : "dapl-diag-7",
        "severity" : "error",
        "human" : "All Period.emd data elements should be truncated to a year only for de-identified resources.",
        "expression" : "$this is Period and Period.end.exists() implies $this.end.toString().length() = 4"
      },
      {
        "key" : "dapl-diag-7a",
        "severity" : "error",
        "human" : "All Period.start data elements should have valid year > 1900",
        "expression" : "$this is Period and Period.end.exists() implies $this.end.toString() >= '1900'"
      }],
      "mustSupport" : true
    },
    {
      "id" : "Condition.recordedDate",
      "path" : "Condition.recordedDate",
      "min" : 0,
      "max" : "1",
      "constraint" : [{
        "key" : "dapl-diag-8",
        "severity" : "error",
        "human" : "All dateTime data elements should be truncated to a year only for de-identified resources.",
        "expression" : "$this.toString().length() = 4"
      },
      {
        "key" : "dapl-diag-8a",
        "severity" : "error",
        "human" : "All dateTime data elements should have valid year > 1900",
        "expression" : "$this is DateTime implies $this.toString() >= '1900'"
      }],
      "mustSupport" : true
    },
    {
      "id" : "Condition.recorder.display",
      "path" : "Condition.recorder.display",
      "min" : 0,
      "max" : "0",
      "mustSupport" : false
    },
    {
      "id" : "Condition.asserter.display",
      "path" : "Condition.asserter.display",
      "min" : 0,
      "max" : "0",
      "mustSupport" : false
    },
    {
      "id" : "Condition.note",
      "path" : "Condition.note",
      "min" : 0,
      "max" : "0",
      "mustSupport" : false
    }]
  }
}

```
