{
    "$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/professional-profile",
    "title": "Name",
    "description": "Schema for MedBiq Name",
    "type": "object",
    "$defs": {
        "NonNullString": {
            "$ref": "http://medbiq.pixelbytellc.com/common.schema.json#/$defs/NonNullStringType"
        },
        "NameDetails": {
            "type": "object",
            "properties": {
                "_FormattedName": {
                    "$ref": "#/$defs/NonNullString"
                },
                "_Title": {
                    "$ref": "#/$defs/NonNullString"
                },
                "_GivenName": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/NonNullString"
                    }
                },
                "_FamilyName": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/NonNullString"
                    }
                },
                "_GenerationIdentifier": {
                    "$ref": "#/$defs/NonNullString"
                },
                "_Degree": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/NonNullString"
                    }
                }
            },
            "required": ["_Title", "_GivenName", "_FamilyName", "_Degree"]
        },
        "NameType": {
            "type": "object",
            "properties": {
                "_Alias": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "allOf": [
                            {
                                "$ref": "#/$defs/NameDetails"
                            }
                        ]
                    }
                },
                "_FormerName": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "allOf": [
                            {
                                "$ref": "#/$defs/NameDetails"
                            }
                        ]
                    }
                }
            }
        }
    },
    "properties": {
        "Name": {
            "$ref": "#/$defs/NameType"
        }
    }
}
