Thoryn

VCT templates · VCT templates

Healthcare Licence VCT

VCT template for a national healthcare licensing board. Carries practitioner type, licence number, valid_until, and optional specialisation.

Tested against:credentialIssuer: 1.0.0vctRegistry: 1.0.0

vct-templates recipe — shared category architecture: how this pattern composes with Hub, Broker, and the rest of the catalog

Issuer archetype

A national healthcare licensing board (NL Big-register, DE Bundesärztekammer, FR Ordre des Médecins). The board mints credentials on initial registration; revokes same-day on disciplinary action.

VCT URL

https://thoryn.org/vct/HealthcarePractitionerLicense-v1

Claim schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "HealthcarePractitionerLicense",
  "type": "object",
  "required": ["practitioner_type", "licence_number", "valid_until"],
  "properties": {
    "practitioner_type": {
      "type": "string",
      "enum": ["physician", "nurse", "pharmacist", "midwife", "physiotherapist"]
    },
    "licence_number":     { "type": "string", "pattern": "^[A-Z]{2}-[A-Z]+-[0-9]{6,12}$" },
    "issued_at":          { "type": "string", "format": "date" },
    "valid_until":        { "type": "string", "format": "date" },
    "specialisation":     { "type": "string" },
    "supervising_board":  { "type": "string" }
  }
}

Display metadata

{
  "name": "Healthcare Licence",
  "description": "Professional licence issued by the national medical board.",
  "background_color": "#1a2a6e",
  "text_color": "#ffffff",
  "claims": [
    { "path": "practitioner_type", "label": "Type" },
    { "path": "licence_number",    "label": "Licence #" },
    { "path": "valid_until",       "label": "Valid until" }
  ]
}

Sample minted credential

{
  "iss": "did:nl:big-register",
  "sub": "did:key:zQ3sh...",
  "vct": "https://thoryn.org/vct/HealthcarePractitionerLicense-v1",
  "iat": 1735000000,
  "exp": 1798072000,
  "practitioner_type": "physician",
  "licence_number": "NL-BIG-12345678",
  "issued_at": "2024-06-30",
  "valid_until": "2027-06-30",
  "specialisation": "internal medicine"
}

Lifecycle

  • Expiry: intrinsic via valid_until (typically 3–5 years)
  • Revocation: status-list; same-day on disciplinary action
  • Deferred flow: not used (issuance is synchronous after board registration)

See also