{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "http://smart.who.int/base/StructureDefinition-FinishedVaccineProducts.schema.json",
  "title": "WHO Vaccine PreQual DB - Finished Vaccine Products",
  "description": "WHO Vaccine PreQual DB - Finished Vaccine Products.\nLogical model for the WHO PreQual DB as provided by the backend API at:\n     https://extranet.who.int/prequal/vaccines/prequalified-vaccines\nThis model provides authoritative vaccine product IDs and a richer data structure compared to the CSV export.\nSub-objects with Identification.Id are modeled as separate logical models and linked via references.\n\nKey fields from the API (FinishedVaccineProducts):\n  ProductDetails.Identification.Id - Vaccine Product ID (authoritative)\n  ProductDetails.Identification.Name - Product reference name (e.g. FVP-P-447)\n  ProductDetails.Type - Product type code (e.g. Finished Vaccine Product)\n  ProductDetails.DateOfPreQualifiedAcceptance - Date of prequalification\n  ProductDetails.AssessmentProcedure - Assessment procedure code\n  ProductDetails.ApplicantOrganization - Manufacturer/applicant with ID, name, address\n  ProductDetails.Presentation - Presentation form (Vial, Ampoule, etc.)\n  ProductDetails.PharmaceuticalForm - Pharmaceutical form details\n  ProductDetails.DosageDetails.NoOfDosagesPerPrimaryContainer - Number of doses\n  ProductDetails.NRADetails - Responsible NRA with ID, name, address\n  ProductDetails.VaccineDetails - Vaccine type with full, abbreviated, and commercial names\n  ProductDetails.StorageDetails - Storage temperature and shelf life\n  ProductDetails.Status - Prequalification status code",
  "type": "object",
  "properties": {
    "resourceType": {
      "type": "string",
      "const": "FinishedVaccineProducts",
      "description": "Resource type identifier for FinishedVaccineProducts logical model"
    },
    "productId": {
      "type": "object",
      "description": "Vaccine Product ID (authoritative)"
    },
    "productName": {
      "type": "string",
      "description": "Product reference name (e.g. FVP-P-447)"
    },
    "productType": {
      "type": "string",
      "description": "Product type code from PreQualDatabaseMetadata (e.g. FinishedVaccineProduct)"
    },
    "dateOfPrequal": {
      "type": "string",
      "format": "date-time",
      "description": "Date of prequalification acceptance"
    },
    "assessmentProcedure": {
      "type": "string",
      "description": "Assessment procedure code from PreQualDatabaseMetadata (e.g. PrequalificationStandard)"
    },
    "status": {
      "type": "string",
      "description": "Product status code from PreQualDatabaseMetadata (e.g. Prequalified)"
    },
    "pharmaceuticalForm": {
      "type": "string",
      "description": "Pharmaceutical form code from PreQualDatabaseMetadata"
    },
    "presentation": {
      "type": "object",
      "description": "Presentation (e.g. Vial, Ampoule)"
    },
    "numDoses": {
      "type": "number",
      "description": "Number of doses per primary container"
    },
    "vaccineFullName": {
      "type": "string",
      "description": "Vaccine full name"
    },
    "vaccineAbbreviatedName": {
      "type": "string",
      "description": "Vaccine abbreviated name"
    },
    "vaccineCommercialName": {
      "type": "string",
      "description": "Vaccine commercial name"
    },
    "vaccineTypeId": {
      "type": "object",
      "description": "Vaccine type ID"
    },
    "routeOfAdministration": {
      "type": "string",
      "description": "Route of administration code from PreQualDatabaseMetadata"
    },
    "vialMonitor": {
      "type": "string",
      "description": "Vial monitor type (e.g. Type 14, Type 30)"
    },
    "multidoseVialPolicy": {
      "type": "string",
      "description": "Multidose vial policy text"
    },
    "presentationOther": {
      "type": "string",
      "description": "Alternative presentation description when Presentation is 'Other'"
    },
    "applicantId": {
      "type": "object",
      "description": "Applicant/manufacturer organization ID (may be absent if not yet assigned)"
    },
    "applicantName": {
      "type": "string",
      "description": "Applicant/manufacturer organization name (always present from API data)"
    },
    "applicantAddress": {
      "type": "object",
      "description": "Applicant organization address"
    },
    "nraId": {
      "type": "object",
      "description": "NRA organization ID (may be absent if not yet assigned)"
    },
    "nraName": {
      "type": "string",
      "description": "Responsible NRA name (always present from API data)"
    },
    "nraCountry": {
      "type": "string",
      "description": "NRA country"
    },
    "shelfLife": {
      "type": "string",
      "description": "Shelf life (e.g. 24 months)"
    },
    "storageTemperature": {
      "type": "string",
      "description": "Storage temperature (e.g. 2 - 8°C)"
    },
    "diluent": {
      "type": "string",
      "description": "Diluent information"
    },
    "lastPublishingDate": {
      "type": "string",
      "format": "date-time",
      "description": "Last publishing date"
    },
    "publishingRemarks": {
      "type": "string",
      "description": "Publishing remarks"
    },
    "preservative": {
      "type": "string",
      "description": "Preservative name (e.g. Thiomersal)"
    },
    "preservativeConcentration": {
      "type": "string",
      "description": "Preservative concentration (e.g. 0.01%)"
    },
    "manufacturerLM": {
      "type": "object",
      "description": "Manufacturer logical model instance reference (linked when ApplicantOrganization.Identification.Id is non-null)"
    },
    "nraLM": {
      "type": "object",
      "description": "NRA logical model instance reference (linked when NRADetails.Identification.Id is non-null)"
    },
    "vaccineLM": {
      "type": "object",
      "description": "Vaccine logical model instance reference (linked when VaccineDetails.Identification.Id is non-null)"
    },
    "bulkSupplierLM": {
      "type": "object",
      "description": "Bulk supplier logical model instance reference (linked when BulkSupplier.Id is non-null)"
    },
    "packagingLM": {
      "type": "array",
      "items": {
        "type": "object",
        "description": "FHIR Reference"
      },
      "description": "Product packaging logical model instance references"
    },
    "documentLM": {
      "type": "array",
      "items": {
        "type": "object",
        "description": "FHIR Reference"
      },
      "description": "Document detail logical model instance references"
    },
    "siteLM": {
      "type": "array",
      "items": {
        "type": "object",
        "description": "FHIR Reference"
      },
      "description": "Site detail logical model instance references"
    },
    "ingredientLM": {
      "type": "array",
      "items": {
        "type": "object",
        "description": "FHIR Reference"
      },
      "description": "Product ingredient logical model instance references"
    },
    "manufacturerReference": {
      "type": "object",
      "description": "Manufacturer FHIR Organization reference"
    },
    "responsibleNRAReference": {
      "type": "object",
      "description": "Responsible NRA FHIR Organization reference"
    },
    "productReference": {
      "type": "object",
      "description": "Product FHIR reference (when available from pcmt dependency)"
    }
  },
  "required": [
    "resourceType",
    "productId",
    "productName",
    "productType",
    "dateOfPrequal",
    "status",
    "presentation",
    "vaccineCommercialName",
    "applicantName",
    "nraName",
    "manufacturerReference",
    "responsibleNRAReference"
  ],
  "resourceDefinition": "http://smart.who.int/pcmt-vaxprequal/StructureDefinition/FinishedVaccineProducts",
  "fhir:parent": "http://hl7.org/fhir/StructureDefinition/Base"
}