{
    "$schema": "https://json-schema.org/draft/2020-12/schema#",
    "$vocabulary": {
        "https://json-schema.org/draft/2020-12/vocab/core": true,
        "https://json-schema.org/draft/2020-12/vocab/applicator": true,
        "https://json-schema.org/draft/2020-12/vocab/unevaluated": true,
        "https://json-schema.org/draft/2020-12/vocab/validation": true,
        "https://json-schema.org/draft/2020-12/vocab/meta-data": true,
        "https://json-schema.org/draft/2020-12/vocab/format-annotation": true,
        "https://json-schema.org/draft/2020-12/vocab/content": true
    },
    "$id": "https://www.medbiq.org/standards/healthcare-learning-object-metadata",
    "title": "Healthcare Learning Object for custom elements",
    "type": "object",
    "annotations": {
        "license": "This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, see the file license.txt, visit http://creativecommons.org/licenses/by-sa/2.0 or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.",
        "schemaDescription": [
            "This component schema definition defines global schema data type declarations for data types defined in the LOMv1.0 base schema."
        ],
        "changeHistory": [
            "NOTE: This change history is used to document changes to the XML Schema definition during the balloting process. This change history will be removed once the final version of the standard is published. A new change history will be included to indicate the initial release that maps to the final standard.",
            "CHANGE HISTORY",
            "11/14/2003: Updated xs:pattern for the DurationString. The pattern did not permit zero values for each of the date and time components.",
            "03/15/2004: Changed the restriction type for LanguageIdNone from xs:string to xs:token.",
            "08/24/2004: To correct an XML Binding to Marshalling issue, a change is needed to resolve a naming convention for two complex types: 1. Changed the name of the LangString complexType to LanguageString. 2. Changed the name of the langString complexType to LangString. Updated the Creative Commons Licensing agreement to reference the Attribution-ShareAlike 2.0.",
            "09/27/2004: Updated file documentation to correspond with working draft 3. Removed the LanguageIdOrNone and LanguageIdNone type declarations. The types were not needed. The LanguageId type was updated to support attribute extensions. The LanguageId will now validate any language defined by 1484.12.3 and the token 'none'. Updated VCard to support attribute extensions. Updated LanguageString to reference the xs:language data type. Updated DateTimeValue to support attribute extensions. Updated DurationValue to support attribute extensions.",
            "24 May 2007: NOTE: The Size and Duration types have been renamed SizeBase and DurationBase to prevent errors with web services development tools. This change does not affect the resulting XML document. The change applies only to MedBiquitous Healthcare LOM schema files."
        ]
    },
    "allOf": [
        {
            "$ref": "../unique/strict.schema.json"
        },
        {
            "$ref": "../extend/custom.schema.json"
        }
    ],
    "$defs": {
        "CharacterString": {
            "type": "string"
        },
        "LanguageId": {
            "$ref": "../extend/custom.schema.json#/$defs/customAttributes"
        },
        "VCard": {
            "allOf": [
                {
                    "$ref": "#/$defs/CharacterString"
                }
            ],
            "$ref": "../extend/custom.schema.json#/$defs/customAttributes"
        },
        "MimeType": {
            "$ref": "#/$defs/CharacterString"
        },
        "SizeBase": {
            "type": "integer",
            "minimum": 0
        },
        "LanguageString": {
            "type": "object",
            "oneOf": [
                {
                    "$ref": "#/$defs/LangString"
                },
                {
                    "$ref": "../extend/custom.schema.json#/$defs/customElements"
                }
            ],
            "allOf": [
                {
                    "$ref": "../extend/custom.schema.json#/$defs/customAttributes"
                }
            ]
        },
        "LangString": {
            "$ref": "#/$defs/CharacterString",
            "properties": {
                "language": {
                    "type": "string",
                    "pattern": "^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$"
                },
                "customAttributes": {
                    "$ref": "../extend/custom.schema.json#/$defs/customAttributes"
                }
            }
        },
        "DateTime": {
            "oneOf": [
                {
                    "$ref": "#/$defs/DateTimeValue"
                },
                {
                    "$ref": "#/$defs/description"
                }
            ]
        },
        "DateTimeValue": {
            "$ref": "#/$defs/DateTimeValue",
            "properties": {
                "DateTimeValue": {
                    "$ref": "../unique/strict.schema.json#/$defs/DateTimeValue"
                },
                "customAttributes": {
                    "$ref": "../extend/custom.schema.json#/$defs/customAttributes"
                }
            }
        },
        "DateTimeString": {
            "$ref": "#/$defs/CharacterString",
            "pattern": "^([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]|[0-9][1-9][0-9]{2}|[1-9][0-9]{3})(\\-(0[1-9]|1[0-2])(\\-(0[1-9]|[1-2][0-9]|3[0-1])(T([0-1][0-9]|2[0-3])(:[0-5][0-9](:[0-5][0-9](\\.[0-9]{1,}(Z|((\\+|\\-)([0-1][0-9]|2[0-3]):[0-5][0-9]))?)?)?)?)?)?)?)?$"
        },
        "DurationBase": {
            "oneOf": [
                {
                    "$ref": "#/$defs/DurationValue"
                },
                {
                    "$ref": "#/$defs/description"
                },
                {
                    "$ref": "../extend/custom.schema.json#/$defs/customAttributes"
                }
            ]
        }
    }
}
