{ "$schema":                "https://json-schema.org/draft/2020-12/schema",
  "$id":                    "https://schemas.mpai.community/TFA/V1.5/data/PhysiologicalSignalQualifier.json",
  "title":                  "Physiological Signal Qualifier V1.5",
  "description":            "Specifies Sub-Types, Formats, ans Attributes of of physiological signals.",
  "type":                   "object",
  "additionalProperties":   false,
  "required":               ["SubTypes", "Formats", "GroupMap"],
  "properties":             {

    "SubTypes":             { "type": "object", "required": ["ECG", "PPG", "EMG", "EOG", "Ventilation", "GSR / EDA",
                              "Blood Pressure Waveform"], "additionalProperties": false, "properties": {
      "ECG":                { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true,
                              "default": [ "Resting 12Ã¢â‚¬â€˜lead ECG", "Exercise / Stress ECG", "SignalÃ¢â‚¬â€˜Averaged ECG (SAE)",
                              "Heart Rate Variability (HRV)", "Ambulatory ECG (Holter)", "Wearable ECG" ] },
      "PPG":                { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true,
                              "default": [ "Reflective PPG", "Transmissive PPG", "MultiÃ¢â‚¬â€˜wavelength PPG", "Wearable PPG" ] },
      "EMG":                { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true,
                              "default": [ "Surface EMG (sEMG)", "Intramuscular EMG", "HighÃ¢â‚¬â€˜density EMG" ] },
      "EOG":                { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true,
                              "default": [ "Horizontal/vertical EOG", "Blink detection EOG", "Saccade tracking EOG" ] },
      "Ventilation":        { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true,
                              "default": [ "Airflow", "Respiratory effort (thoracic/abdominal belts)",
                              "Capnography (COÃ¢â€šâ€š waveform)" ] },
      "GSR / EDA":          { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true,
                              "default": [ "Skin conductance", "Skin resistance", "Tonic/phasic EDA" ] },
      "Blood Pressure Waveform": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true,
                              "default": [ "Arterial pressure waveform", "Pulse transit time waveform",
                              "Continuous nonÃ¢â‚¬â€˜invasive BP waveform" ] } } },

    "Formats":              { "type": "object",  "required": [ "ECG Formats", "PPG Formats", "EMG Formats", "EOG Formats",
                              "Ventilation Formats", "GSR / EDA Formats", "Blood Pressure Waveform Formats" ] },
                              "additionalProperties": false, "properties": {
      "ECG Formats":        { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true, "default": [
                              "HL7 aECG (Annotated ECG)", "SCPÃ¢â‚¬â€˜ECG (Standard Communications Protocol for ComputerÃ¢â‚¬â€˜Assisted Electrocardiography)",
                              "DICOMÃ¢â‚¬â€˜ECG (DICOM Waveform for ECG)", "ecgML (XMLÃ¢â‚¬â€˜based ECG format)", "mECGML (Mobile ECG Markup Language)",
                              "MLÃ¢â‚¬â€˜ECG (Machine Learning ECG format)", "MFER (Medical Waveform Format Encoding Rules)", "Philips XML (Philips ECG XML format)",
                              "ecgAware (ECG markup for ambulatory monitoring)", "EDF / EDF+ (General biosignal format)", "BDF (BioSemi Data Format)",
                              "WFDB (PhysioNet waveform format)" ] },
      "PPG Formats":        { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true, "default": [
                              "OpenSignals (Biosignal format used by BITalino and wearables)", "EDF / EDF+", "BDF", "WFDB",
                              "HDF5 (Large biosignal datasets)", "PPGÃ¢â‚¬â€˜BDF (BioSemi PPG variant)", "PPGÃ¢â‚¬â€˜CSV/TSV (Common export formats)" ] },
      "EMG Formats":        { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true, "default": [
                              "SENIAMÃ¢â‚¬â€˜compatible CSV/TSV (Standard EMG electrode placement & data conventions)", "EDF / EDF+", "BDF",
                              "WFDB", "OpenSignals", "HDF5", "EMGÃ¢â‚¬â€˜MAT (MATLABÃ¢â‚¬â€˜based EMG format)" ] },
      "EOG Formats":        { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true, "default": [
                              "EDF / EDF+", "BDF", "WFDB", "OpenSignals", "HDF5", "EOGÃ¢â‚¬â€˜MAT" ] },
      "Ventilation Formats":{ "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true, "default": [
                              "EDF / EDF+", "WFDB", "DICOMÃ¢â‚¬â€˜Waveform (for capnography)", "HDF5", "RespÃ¢â‚¬â€˜CSV/TSV" ] },
      "GSR / EDA Formats":  { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true, "default": [
                              "OpenSignals", "EDF / EDF+", "WFDB", "HDF5", "EDAÃ¢â‚¬â€˜CSV/TSV" ] },
      "Blood Pressure Waveform Formats": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true, "default": [
                              "DICOMÃ¢â‚¬â€˜Waveform", "WFDB", "EDF / EDF+", "HDF5", "BPÃ¢â‚¬â€˜CSV/TSV" ] } },
    "GroupMap":             { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": {
                              "subTypeGroup": { "type": "string" }, "formatGroup": { "type": "string" } },
                              "required": ["subTypeGroup", "formatGroup"] }, "minItems": 1, "default": [
                            { "subTypeGroup": "Resting 12Ã¢â‚¬â€˜lead ECG",                 "formatGroup": "ECG Formats" },
                            { "subTypeGroup": "Exercise / Stress ECG",               "formatGroup": "ECG Formats" },
                            { "subTypeGroup": "SignalÃ¢â‚¬â€˜Averaged ECG (SAE)",            "formatGroup": "ECG Formats" },
                            { "subTypeGroup": "Heart Rate Variability (HRV)",         "formatGroup": "ECG Formats" },
                            { "subTypeGroup": "Ambulatory ECG (Holter)",              "formatGroup": "ECG Formats" },
                            { "subTypeGroup": "Wearable ECG",                         "formatGroup": "ECG Formats" },

                            { "subTypeGroup": "Reflective PPG",                       "formatGroup": "PPG Formats" },
                            { "subTypeGroup": "Transmissive PPG",                     "formatGroup": "PPG Formats" },
                            { "subTypeGroup": "MultiÃ¢â‚¬â€˜wavelength PPG",                 "formatGroup": "PPG Formats" },
                            { "subTypeGroup": "Wearable PPG",                         "formatGroup": "PPG Formats" },

                            { "subTypeGroup": "Surface EMG (sEMG)",                   "formatGroup": "EMG Formats" },
                            { "subTypeGroup": "Intramuscular EMG",                    "formatGroup": "EMG Formats" },
                            { "subTypeGroup": "HighÃ¢â‚¬â€˜density EMG",                     "formatGroup": "EMG Formats" },

                            { "subTypeGroup": "Horizontal/vertical EOG",              "formatGroup": "EOG Formats" },
                            { "subTypeGroup": "Blink detection EOG",                  "formatGroup": "EOG Formats" },
                            { "subTypeGroup": "Saccade tracking EOG",                 "formatGroup": "EOG Formats" },

                            { "subTypeGroup": "Airflow",                               "formatGroup": "Ventilation Formats" },
                            { "subTypeGroup": "Respiratory effort (thoracic/abdominal belts)", "formatGroup": "Ventilation Formats" },
                            { "subTypeGroup": "Capnography (COÃ¢â€šâ€š waveform)",            "formatGroup": "Ventilation Formats" },

                            { "subTypeGroup": "Skin conductance",                      "formatGroup": "GSR / EDA Formats" },
                            { "subTypeGroup": "Skin resistance",                       "formatGroup": "GSR / EDA Formats" },
                            { "subTypeGroup": "Tonic/phasic EDA",                      "formatGroup": "GSR / EDA Formats" },

                            { "subTypeGroup": "Arterial pressure waveform",            "formatGroup": "Blood Pressure Waveform Formats" },
                            { "subTypeGroup": "Pulse transit time waveform",           "formatGroup": "Blood Pressure Waveform Formats" },
                            { "subTypeGroup": "Continuous nonÃ¢â‚¬â€˜invasive BP waveform",   "formatGroup": "Blood Pressure Waveform Formats" } ] },

    "Attributes":           { "type": "object", "additionalProperties": false, "properties": {
      "ChannelNames":       { "type": "array", "items": { "type": "string" }, "minItems": 1 },
      "Units":              { "type": "array", "items": { "type": "string" }, "minItems": 1 },
      "SamplingRateHz":     { "type": "number", "minimum": 0 },
      "SensorPlacement":    { "type": "string" },
      "LeadConfiguration":  { "type": "string", "description": "For ECG (e.g., Mason-Likar, Einthoven, Frank)." },
      "ElectrodePlacement": { "type": "string", "description": "For EMG/EOG placement conventions (e.g., SENIAM)." },
      "Device":             { "type": "string" },
      "RecordingContext":   { "type": "string" } } },

    "DataXMData":           { "$ref": "https://schemas.mpai.community/PTF/V1.0/data/DataExchangeMetadata.json" },
    "DescrMetadata":        { "type": "string", "maxLength": 2048 } } }
