<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="NPPRContactPoint" />
  <url value="http://electronichealth.se/fhir/NPPR/StructureDefinition/NPPRContactPoint" />
  <name value="NPPRContactPoint" />
  <status value="active" />
  <description value="Profile for expressing telecom details with valid value formats" />
  <fhirVersion value="5.0.0" />
  <kind value="complex-type" />
  <abstract value="false" />
  <type value="ContactPoint" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/ContactPoint" />
  <derivation value="constraint" />
  <differential>
    <element id="ContactPoint">
      <path value="ContactPoint" />
      <constraint>
        <key value="nppr-telecom-phone-1" />
        <severity value="warning" />
        <human value="If telecom.system = #phone, value should follow format +46123456789" />
        <expression value="value.matches('^\\+[1-9][0-9]+$') or system != 'phone'" />
        <source value="http://electronichealth.se/fhir/NPPR/StructureDefinition/NPPRContactPoint" />
      </constraint>
      <constraint>
        <key value="nppr-telecom-url-1" />
        <severity value="warning" />
        <human value="If telecom.system = #url, value should follow valid format. Example: https://example.com" />
        <expression value="value.matches('(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/[^\\s]*)?$') or system != 'url'" />
        <source value="http://electronichealth.se/fhir/NPPR/StructureDefinition/NPPRContactPoint" />
      </constraint>
      <constraint>
        <key value="nppr-telecom-email-1" />
        <severity value="warning" />
        <human value="If telecom.system = #email, value should follow valid format Example: test@test.com" />
        <expression value="value.matches('^[\\w.-]{1,64}@(?!.{254})[\\w.-]+\\.[A-Za-z]{2,4}$') or system != 'email'" />
        <source value="http://electronichealth.se/fhir/NPPR/StructureDefinition/NPPRContactPoint" />
      </constraint>
    </element>
    <element id="ContactPoint.system">
      <path value="ContactPoint.system" />
      <min value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="http://hl7.org/fhir/ValueSet/contact-point-system" />
      </binding>
    </element>
    <element id="ContactPoint.value">
      <path value="ContactPoint.value" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="ContactPoint.use">
      <path value="ContactPoint.use" />
      <mustSupport value="true" />
    </element>
    <element id="ContactPoint.period">
      <path value="ContactPoint.period" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="ContactPoint.period.start">
      <path value="ContactPoint.period.start" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="ContactPoint.period.end">
      <path value="ContactPoint.period.end" />
      <mustSupport value="true" />
    </element>
  </differential>
</StructureDefinition>