# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
#
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
# --------------------------------------------------------------------------
# pylint: disable=too-many-lines
# pylint: disable=too-many-statements

from azure.cli.core.commands.parameters import (
    tags_type,
    get_enum_type,
    resource_group_name_type,
    get_location_type
)
from azure.cli.core.commands.validators import (
    get_default_location_from_resource_group,
    validate_file_or_dict
)
from azext_healthcareapis.action import (
    AddAccessPolicies,
    AddCosmosDbConfiguration,
    AddAuthenticationConfiguration,
    AddCorsConfiguration,
    AddServicesOciArtifacts,
    AddPrivateEndpointConnections,
    AddPrivateLinkServiceConnectionState,
    AddIngestionEndpointConfiguration,
    AddFhirservicesAccessPolicies,
    AddFhirservicesAuthenticationConfiguration,
    AddFhirservicesCorsConfiguration,
    AddResourceTypeOverrides,
    AddFhirservicesOciArtifacts
)


def load_arguments(self, _):

    with self.argument_context('healthcareapis service list') as c:
        c.argument('resource_group_name', resource_group_name_type)

    with self.argument_context('healthcareapis service show') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('resource_name', type=str, help='The name of the service instance.', id_part='name')

    with self.argument_context('healthcareapis service create') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('resource_name', type=str, help='The name of the service instance.')
        c.argument('kind', arg_type=get_enum_type(['fhir', 'fhir-Stu3', 'fhir-R4']), help='The kind of the service.')
        c.argument('location', arg_type=get_location_type(self.cli_ctx),
                   validator=get_default_location_from_resource_group)
        c.argument('tags', tags_type)
        c.argument('etag', type=str, help='An etag associated with the resource, used for optimistic concurrency when '
                   'editing it.')
        c.argument('identity_type', arg_type=get_enum_type(['SystemAssigned', 'None']), help='Type of identity being '
                   'specified, currently SystemAssigned and None are allowed.')
        c.argument('access_policies', action=AddAccessPolicies, nargs='*', help='The access policies of the service '
                   'instance.')
        c.argument('cosmos_db_configuration', action=AddCosmosDbConfiguration, nargs='*', help='The settings for the '
                   'Cosmos DB database backing the service.')
        c.argument('authentication_configuration', options_list=['--authentication-configuration', '-c'],
                   action=AddAuthenticationConfiguration, nargs='*',
                   help='The authentication configuration for the service instance.')
        c.argument('cors_configuration', action=AddCorsConfiguration, nargs='*', help='The settings for the CORS '
                   'configuration of the service instance.')
        c.argument('private_endpoint_connections', action=AddPrivateEndpointConnections, nargs='*', help='The list of '
                   'private endpoint connections that are set up for this resource.')
        c.argument('public_network_access', arg_type=get_enum_type(['Enabled', 'Disabled']), help='Control permission '
                   'for data plane traffic coming from public networks while private endpoint is enabled.')
        c.argument('login_servers', type=str, help='The list of login servers that shall'
                   'be added to the service instance.', arg_group='Acr Configuration')
        c.argument('oci_artifacts',
                   action=AddServicesOciArtifacts, nargs='*',
                   help='The list of Open Container Initiative (OCI) artifacts.', arg_group='Acr Configuration')
        c.argument('export_configuration_storage_account_name',
                   options_list=['--export-configuration-storage-account-name', '-s'],
                   type=str, help='The name of the default export storage '
                   'account.')

    with self.argument_context('healthcareapis service update') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('resource_name', type=str, help='The name of the service instance.', id_part='name')
        c.argument('tags', tags_type)
        c.argument('public_network_access', arg_type=get_enum_type(['Enabled', 'Disabled']), help='Control permission '
                   'for data plane traffic coming from public networks while private endpoint is enabled.')

    with self.argument_context('healthcareapis service delete') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('resource_name', type=str, help='The name of the service instance.', id_part='name')

    with self.argument_context('healthcareapis service wait') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('resource_name', type=str, help='The name of the service instance.', id_part='name')

    with self.argument_context('healthcareapis operation-result show') as c:
        c.argument('location_name', type=str, help='The location of the operation.', id_part='name')
        c.argument('operation_result_id', type=str, help='The ID of the operation result to get.',
                   id_part='child_name_1')

    with self.argument_context('healthcareapis private-endpoint-connection list') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('resource_name', type=str, help='The name of the service instance.')

    with self.argument_context('healthcareapis private-endpoint-connection show') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('resource_name', type=str, help='The name of the service instance.', id_part='name')
        c.argument('private_endpoint_connection_name',
                   options_list=['--name', '-n', '--private-endpoint-connection-name'],
                   type=str, help='The name of the private endpoint connection associated with the Azure resource',
                   id_part='child_name_1')

    with self.argument_context('healthcareapis private-endpoint-connection create') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('resource_name', type=str, help='The name of the service instance.')
        c.argument('private_endpoint_connection_name',
                   options_list=['--name', '-n', '--private-endpoint-connection-name'],
                   type=str, help='The name of the private endpoint connection associated with the Azure resource')
        c.argument('private_link_service_connection_state',
                   options_list=['--private-link-service-connection-state', '-s'],
                   action=AddPrivateLinkServiceConnectionState, nargs='*',
                   help='A collection of information about the state of the connection between service consumer and '
                   'provider.')
        c.argument('private_link_service_connection_state_status',
                   arg_type=get_enum_type(['Pending', 'Approved', 'Rejected']),
                   help='Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service.',
                   deprecate_info=c.deprecate(redirect='--private-link-service-connection-state'))
        c.argument('private_link_service_connection_state_description', type=str,
                   help='The reason for approval/rejection of the connection.',
                   deprecate_info=c.deprecate(redirect='--private-link-service-connection-state'))
        c.argument('private_link_service_connection_state_actions_required', type=str, help='A message indicating if '
                   'changes on the service provider require any updates on the consumer.',
                   deprecate_info=c.deprecate(redirect='--private-link-service-connection-state'))

    with self.argument_context('healthcareapis private-endpoint-connection update') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('resource_name', type=str, help='The name of the service instance.', id_part='name')
        c.argument('private_endpoint_connection_name',
                   options_list=['--name', '-n', '--private-endpoint-connection-name'],
                   type=str, help='The name of the private endpoint connection associated with the Azure resource',
                   id_part='child_name_1')
        c.argument('private_link_service_connection_state',
                   options_list=['--private-link-service-connection-state', '-s'],
                   action=AddPrivateLinkServiceConnectionState, nargs='*',
                   help='A collection of information about the state of the connection between service consumer and '
                   'provider.')
        c.argument('private_link_service_connection_state_status',
                   arg_type=get_enum_type(['Pending', 'Approved', 'Rejected']),
                   help='Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service.',
                   deprecate_info=c.deprecate(redirect='--private-link-service-connection-state'))
        c.argument('private_link_service_connection_state_description', type=str,
                   help='The reason for approval/rejection of the connection.',
                   deprecate_info=c.deprecate(redirect='--private-link-service-connection-state'))
        c.argument('private_link_service_connection_state_actions_required', type=str, help='A message indicating if '
                   'changes on the service provider require any updates on the consumer.',
                   deprecate_info=c.deprecate(redirect='--private-link-service-connection-state'))

    with self.argument_context('healthcareapis private-endpoint-connection delete') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('resource_name', type=str, help='The name of the service instance.', id_part='name')
        c.argument('private_endpoint_connection_name',
                   options_list=['--name', '-n', '--private-endpoint-connection-name'],
                   type=str, help='The name of the private endpoint connection associated with the Azure resource',
                   id_part='child_name_1')

    with self.argument_context('healthcareapis private-endpoint-connection wait') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('resource_name', type=str, help='The name of the service instance.', id_part='name')
        c.argument('private_endpoint_connection_name',
                   options_list=['--name', '-n', '--private-endpoint-connection-name'], type=str,
                   help='The name of the private endpoint connection associated with the Azure resource',
                   id_part='child_name_1')

    with self.argument_context('healthcareapis private-link-resource list') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('resource_name', type=str, help='The name of the service instance.')

    with self.argument_context('healthcareapis private-link-resource show') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('resource_name', type=str, help='The name of the service instance.', id_part='name')
        c.argument('group_name', type=str, help='The name of the private link resource group.',
                   id_part='child_name_1')

    with self.argument_context('healthcareapis acr list') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('resource_name', type=str, help='The name of the service instance.')

    with self.argument_context('healthcareapis acr add') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('resource_name', type=str, help='The name of the service instance.', id_part='name')
        c.argument('login_servers', type=str, help='The list of login servers that shall'
                   'be added to the service instance.')

    with self.argument_context('healthcareapis acr remove') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('resource_name', type=str, help='The name of the service instance.', id_part='name')
        c.argument('login_servers', type=str, help='The list of login servers that shall'
                   'be removed from the service instance.')

    with self.argument_context('healthcareapis acr reset') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('resource_name', type=str, help='The name of the service instance.', id_part='name')
        c.argument('login_servers', type=str, help='The list of login servers to substitute for the existing one.')

    with self.argument_context('healthcareapis workspace list') as c:
        c.argument('resource_group_name', resource_group_name_type)

    with self.argument_context('healthcareapis workspace show') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', options_list=['--name', '-n', '--workspace-name'], type=str, help='The name of '
                   'workspace resource.', id_part='name')

    with self.argument_context('healthcareapis workspace create') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', options_list=['--name', '-n', '--workspace-name'], type=str, help='The name of '
                   'workspace resource.')
        c.argument('tags', tags_type)
        c.argument('etag', type=str, help='An etag associated with the resource, used for optimistic concurrency when '
                   'editing it.')
        c.argument('location', arg_type=get_location_type(self.cli_ctx), required=False,
                   validator=get_default_location_from_resource_group)
        c.argument('public_network_access', arg_type=get_enum_type(['Enabled', 'Disabled']), help='Control permission '
                   'for data plane traffic coming from public networks while private endpoint is enabled.')

    with self.argument_context('healthcareapis workspace update') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', options_list=['--name', '-n', '--workspace-name'], type=str, help='The name of '
                   'workspace resource.', id_part='name')
        c.argument('tags', tags_type)

    with self.argument_context('healthcareapis workspace delete') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', options_list=['--name', '-n', '--workspace-name'], type=str, help='The name of '
                   'workspace resource.', id_part='name')

    with self.argument_context('healthcareapis workspace wait') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', options_list=['--name', '-n', '--workspace-name'], type=str, help='The name of '
                   'workspace resource.', id_part='name')

    with self.argument_context('healthcareapis workspace dicom-service list') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.')

    with self.argument_context('healthcareapis workspace dicom-service show') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')
        c.argument('dicom_service_name', options_list=['--name', '-n', '--dicom-service-name'], type=str, help='The '
                   'name of DICOM Service resource.', id_part='child_name_1')

    with self.argument_context('healthcareapis workspace dicom-service create') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.')
        c.argument('dicom_service_name', options_list=['--name', '-n', '--dicom-service-name'], type=str, help='The '
                   'name of DICOM Service resource.')
        c.argument('tags', tags_type)
        c.argument('etag', type=str, help='An etag associated with the resource, used for optimistic concurrency when '
                   'editing it.')
        c.argument('location', arg_type=get_location_type(self.cli_ctx), required=False,
                   validator=get_default_location_from_resource_group)
        c.argument('identity_type',
                   arg_type=get_enum_type(['None', 'SystemAssigned', 'UserAssigned', 'SystemAssigned,UserAssigned']),
                   help='Type of identity being specified, currently SystemAssigned and None are allowed.',
                   arg_group='Identity')
        c.argument('user_assigned_identities', options_list=['--user-assigned-identities', '-i'],
                   type=validate_file_or_dict, help='The set of user assigned identities '
                   'associated with the resource. The userAssignedIdentities dictionary keys will be ARM resource ids '
                   'in the form: \'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microso'
                   'ft.ManagedIdentity/userAssignedIdentities/{identityName}. The dictionary values can be empty '
                   'objects ({}) in requests. Expected value: json-string/json-file/@json-file.',
                   arg_group='Identity')
        c.argument('public_network_access', arg_type=get_enum_type(['Enabled', 'Disabled']), help='Control permission '
                   'for data plane traffic coming from public networks while private endpoint is enabled.')

    with self.argument_context('healthcareapis workspace dicom-service update') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('dicom_service_name', options_list=['--name', '-n', '--dicom-service-name'], type=str, help='The '
                   'name of DICOM Service resource.', id_part='child_name_1')
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')
        c.argument('tags', tags_type)
        c.argument('identity_type',
                   arg_type=get_enum_type(['None', 'SystemAssigned', 'UserAssigned', 'SystemAssigned,UserAssigned']),
                   help='Type of identity being specified, currently SystemAssigned and None are allowed.',
                   arg_group='Identity')
        c.argument('user_assigned_identities', options_list=['--user-assigned-identities', '-i'],
                   type=validate_file_or_dict, help='The set of user assigned identities '
                   'associated with the resource. The userAssignedIdentities dictionary keys will be ARM resource ids '
                   'in the form: \'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microso'
                   'ft.ManagedIdentity/userAssignedIdentities/{identityName}. The dictionary values can be empty '
                   'objects ({}) in requests. Expected value: json-string/json-file/@json-file.',
                   arg_group='Identity')

    with self.argument_context('healthcareapis workspace dicom-service delete') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('dicom_service_name', options_list=['--name', '-n', '--dicom-service-name'], type=str, help='The '
                   'name of DICOM Service resource.', id_part='child_name_1')
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')

    with self.argument_context('healthcareapis workspace dicom-service wait') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')
        c.argument('dicom_service_name', options_list=['--name', '-n', '--dicom-service-name'], type=str, help='The '
                   'name of DICOM Service resource.', id_part='child_name_1')

    with self.argument_context('healthcareapis workspace iot-connector list') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.')

    with self.argument_context('healthcareapis workspace iot-connector show') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')
        c.argument('iot_connector_name', options_list=['--name', '-n', '--iot-connector-name'], type=str, help='The '
                   'name of IoT Connector resource.', id_part='child_name_1')

    with self.argument_context('healthcareapis workspace iot-connector create') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.')
        c.argument('iot_connector_name', options_list=['--name', '-n', '--iot-connector-name'], type=str, help='The '
                   'name of IoT Connector resource.')
        c.argument('tags', tags_type)
        c.argument('etag', type=str, help='An etag associated with the resource, used for optimistic concurrency when '
                   'editing it.')
        c.argument('location', arg_type=get_location_type(self.cli_ctx), required=False,
                   validator=get_default_location_from_resource_group)
        c.argument('identity_type',
                   arg_type=get_enum_type(['None', 'SystemAssigned', 'UserAssigned', 'SystemAssigned,UserAssigned']),
                   help='Type of identity being specified, currently SystemAssigned and None are allowed.',
                   arg_group='Identity')
        c.argument('user_assigned_identities', options_list=['--user-assigned-identities', '-i'],
                   type=validate_file_or_dict, help='The set of user assigned identities '
                   'associated with the resource. The userAssignedIdentities dictionary keys will be ARM resource ids '
                   'in the form: \'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microso'
                   'ft.ManagedIdentity/userAssignedIdentities/{identityName}. The dictionary values can be empty '
                   'objects ({}) in requests. Expected value: json-string/json-file/@json-file.',
                   arg_group='Identity')
        c.argument('ingestion_endpoint_configuration',
                   options_list=['--ingestion-endpoint-configuration', '-c'],
                   action=AddIngestionEndpointConfiguration, nargs='*', help='Source configuration.')
        c.argument('content', type=validate_file_or_dict, help='The mapping. Expected value: '
                   'json-string/json-file/@json-file.', arg_group='Device Mapping')

    with self.argument_context('healthcareapis workspace iot-connector update') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('iot_connector_name', options_list=['--name', '-n', '--iot-connector-name'], type=str, help='The '
                   'name of IoT Connector resource.', id_part='child_name_1')
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')
        c.argument('tags', tags_type)
        c.argument('identity_type',
                   arg_type=get_enum_type(['None', 'SystemAssigned', 'UserAssigned', 'SystemAssigned,UserAssigned']),
                   help='Type of identity being specified, currently SystemAssigned and None are allowed.',
                   arg_group='Identity')
        c.argument('user_assigned_identities', options_list=['--user-assigned-identities', '-i'],
                   type=validate_file_or_dict, help='The set of user assigned identities '
                   'associated with the resource. The userAssignedIdentities dictionary keys will be ARM resource ids '
                   'in the form: \'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microso'
                   'ft.ManagedIdentity/userAssignedIdentities/{identityName}. The dictionary values can be empty '
                   'objects ({}) in requests. Expected value: json-string/json-file/@json-file.',
                   arg_group='Identity')

    with self.argument_context('healthcareapis workspace iot-connector delete') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('iot_connector_name', options_list=['--name', '-n', '--iot-connector-name'], type=str, help='The '
                   'name of IoT Connector resource.', id_part='child_name_1')
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')

    with self.argument_context('healthcareapis workspace iot-connector wait') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')
        c.argument('iot_connector_name', options_list=['--name', '-n', '--iot-connector-name'], type=str, help='The '
                   'name of IoT Connector resource.', id_part='child_name_1')

    with self.argument_context('healthcareapis workspace iot-connector fhir-destination list') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.')
        c.argument('iot_connector_name', type=str, help='The name of IoT Connector resource.')

    with self.argument_context('healthcareapis workspace iot-connector fhir-destination show') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')
        c.argument('iot_connector_name', type=str, help='The name of IoT Connector resource.', id_part='child_name_1')
        c.argument('fhir_destination_name', type=str, help='The name of IoT Connector FHIR destination resource.',
                   id_part='child_name_2')

    with self.argument_context('healthcareapis workspace iot-connector fhir-destination create') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.')
        c.argument('iot_connector_name', type=str, help='The name of IoT Connector resource.')
        c.argument('fhir_destination_name', type=str, help='The name of IoT Connector FHIR destination resource.')
        c.argument('etag', type=str, help='An etag associated with the resource, used for optimistic concurrency when '
                   'editing it.')
        c.argument('location', arg_type=get_location_type(self.cli_ctx), required=False,
                   validator=get_default_location_from_resource_group)
        c.argument('resource_identity_resolution_type',
                   options_list=['--resource-identity-resolution-type', '-t'],
                   arg_type=get_enum_type(['Create', 'Lookup']),
                   help='Determines how resource identity is resolved on the destination.')
        c.argument('fhir_service_resource_id',
                   options_list=['--fhir-service-resource-id', '-r'],
                   type=str, help='Fully qualified resource id of the FHIR service to connect to.')
        c.argument('content', type=validate_file_or_dict, help='The mapping. Expected value: '
                   'json-string/json-file/@json-file.', arg_group='Fhir Mapping')

    with self.argument_context('healthcareapis workspace iot-connector fhir-destination update') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')
        c.argument('iot_connector_name', type=str, help='The name of IoT Connector resource.', id_part='child_name_1')
        c.argument('fhir_destination_name', type=str, help='The name of IoT Connector FHIR destination resource.',
                   id_part='child_name_2')
        c.argument('etag', type=str, help='An etag associated with the resource, used for optimistic concurrency when '
                   'editing it.')
        c.argument('location', arg_type=get_location_type(self.cli_ctx), required=False,
                   validator=get_default_location_from_resource_group)
        c.argument('resource_identity_resolution_type',
                   options_list=['--resource-identity-resolution-type', '-t'],
                   arg_type=get_enum_type(['Create', 'Lookup']),
                   help='Determines how resource identity is resolved on the destination.')
        c.argument('fhir_service_resource_id',
                   options_list=['--fhir-service-resource-id', '-r'],
                   type=str, help='Fully qualified resource id of the FHIR service to connect to.')
        c.argument('content', type=validate_file_or_dict, help='The mapping. Expected value: '
                   'json-string/json-file/@json-file.', arg_group='Fhir Mapping')
        c.ignore('iot_fhir_destination')

    with self.argument_context('healthcareapis workspace iot-connector fhir-destination delete') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')
        c.argument('iot_connector_name', type=str, help='The name of IoT Connector resource.', id_part='child_name_1')
        c.argument('fhir_destination_name', type=str, help='The name of IoT Connector FHIR destination resource.',
                   id_part='child_name_2')

    with self.argument_context('healthcareapis workspace iot-connector fhir-destination wait') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')
        c.argument('iot_connector_name', type=str, help='The name of IoT Connector resource.', id_part='child_name_1')
        c.argument('fhir_destination_name', type=str, help='The name of IoT Connector FHIR destination resource.',
                   id_part='child_name_2')

    with self.argument_context('healthcareapis workspace fhir-service list') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.')

    with self.argument_context('healthcareapis workspace fhir-service show') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')
        c.argument('fhir_service_name', options_list=['--name', '-n', '--fhir-service-name'], type=str, help='The name '
                   'of FHIR Service resource.', id_part='child_name_1')

    with self.argument_context('healthcareapis workspace fhir-service create') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.')
        c.argument('fhir_service_name', options_list=['--name', '-n', '--fhir-service-name'], type=str, help='The name '
                   'of FHIR Service resource.')
        c.argument('tags', tags_type)
        c.argument('etag', type=str, help='An etag associated with the resource, used for optimistic concurrency when '
                   'editing it.')
        c.argument('location', arg_type=get_location_type(self.cli_ctx), required=False,
                   validator=get_default_location_from_resource_group)
        c.argument('identity_type',
                   arg_type=get_enum_type(['None', 'SystemAssigned', 'UserAssigned', 'SystemAssigned,UserAssigned']),
                   help='Type of identity being specified, currently SystemAssigned and None are allowed.',
                   arg_group='Identity')
        c.argument('user_assigned_identities', options_list=['--user-assigned-identities', '-i'],
                   type=validate_file_or_dict, help='The set of user assigned identities '
                   'associated with the resource. The userAssignedIdentities dictionary keys will be ARM resource ids '
                   'in the form: \'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microso'
                   'ft.ManagedIdentity/userAssignedIdentities/{identityName}. The dictionary values can be empty '
                   'objects ({}) in requests. Expected value: json-string/json-file/@json-file.',
                   arg_group='Identity')
        c.argument('kind', arg_type=get_enum_type(['fhir-Stu3', 'fhir-R4']), help='The kind of the service.')
        c.argument('access_policies', action=AddFhirservicesAccessPolicies, nargs='*', help='Fhir Service access '
                   'policies.')
        c.argument('authentication_configuration', options_list=['--authentication-configuration', '-c'],
                   action=AddFhirservicesAuthenticationConfiguration, nargs='*',
                   help='Fhir Service authentication configuration.')
        c.argument('cors_configuration', action=AddFhirservicesCorsConfiguration, nargs='*', help='Fhir Service Cors '
                   'configuration.')
        c.argument('public_network_access', arg_type=get_enum_type(['Enabled', 'Disabled']), help='Control permission '
                   'for data plane traffic coming from public networks while private endpoint is enabled.')
        c.argument('default', arg_type=get_enum_type(['no-version', 'versioned', 'versioned-update']), help='The '
                   'default value for tracking history across all resources.', arg_group='Resource Version Policy '
                   'Configuration')
        c.argument('resource_type_overrides', options_list=['--resource-type-overrides', '-r'],
                   action=AddResourceTypeOverrides, nargs='*', help='A list of FHIR '
                   'Resources and their version policy overrides. Expect value: KEY1=VALUE1 KEY2=VALUE2 ...',
                   arg_group='Resource Version Policy Configuration')
        c.argument('export_configuration_storage_account_name',
                   options_list=['--export-configuration-storage-account-name', '-s'],
                   type=str, help='The name of the default export storage account.',
                   arg_group='Export Configuration')
        c.argument('login_servers', nargs='*', help='The list of the Azure container registry login servers.',
                   arg_group='Acr Configuration')
        c.argument('oci_artifacts', action=AddFhirservicesOciArtifacts, nargs='*', help='The list of Open Container '
                   'Initiative (OCI) artifacts.', arg_group='Acr Configuration')

    with self.argument_context('healthcareapis workspace fhir-service update') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('fhir_service_name', options_list=['--name', '-n', '--fhir-service-name'], type=str, help='The name '
                   'of FHIR Service resource.', id_part='child_name_1')
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')
        c.argument('tags', tags_type)
        c.argument('identity_type',
                   arg_type=get_enum_type(['None', 'SystemAssigned', 'UserAssigned', 'SystemAssigned,UserAssigned']),
                   help='Type of identity being specified, currently SystemAssigned and None are allowed.',
                   arg_group='Identity')
        c.argument('user_assigned_identities', options_list=['--user-assigned-identities', '-i'],
                   type=validate_file_or_dict, help='The set of user assigned identities '
                   'associated with the resource. The userAssignedIdentities dictionary keys will be ARM resource ids '
                   'in the form: \'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microso'
                   'ft.ManagedIdentity/userAssignedIdentities/{identityName}. The dictionary values can be empty '
                   'objects ({}) in requests. Expected value: json-string/json-file/@json-file.',
                   arg_group='Identity')

    with self.argument_context('healthcareapis workspace fhir-service delete') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('fhir_service_name', options_list=['--name', '-n', '--fhir-service-name'], type=str, help='The name '
                   'of FHIR Service resource.', id_part='child_name_1')
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')

    with self.argument_context('healthcareapis workspace fhir-service wait') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')
        c.argument('fhir_service_name', options_list=['--name', '-n', '--fhir-service-name'], type=str, help='The name '
                   'of FHIR Service resource.', id_part='child_name_1')

    with self.argument_context('healthcareapis workspace private-endpoint-connection list') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.')

    with self.argument_context('healthcareapis workspace private-endpoint-connection show') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')
        c.argument('private_endpoint_connection_name',
                   options_list=['--name', '-n', '--private-endpoint-connection-name'],
                   type=str, help='The name of the private endpoint connection '
                   'associated with the Azure resource', id_part='child_name_1')

    with self.argument_context('healthcareapis workspace private-endpoint-connection create') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.')
        c.argument('private_endpoint_connection_name',
                   options_list=['--name', '-n', '--private-endpoint-connection-name'],
                   type=str, help='The name of the private endpoint connection '
                   'associated with the Azure resource')
        c.argument('private_link_service_connection_state',
                   options_list=['--private-link-service-connection-state', '-s'],
                   action=AddPrivateLinkServiceConnectionState, nargs='*',
                   help='A collection of information about the state of the connection between service consumer and '
                   'provider.')

    with self.argument_context('healthcareapis workspace private-endpoint-connection update') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')
        c.argument('private_endpoint_connection_name',
                   options_list=['--name', '-n', '--private-endpoint-connection-name'],
                   type=str, help='The name of the private endpoint connection '
                   'associated with the Azure resource', id_part='child_name_1')
        c.argument('private_link_service_connection_state',
                   options_list=['--private-link-service-connection-state', '-s'],
                   action=AddPrivateLinkServiceConnectionState, nargs='*',
                   help='A collection of information about the state of the connection between service consumer and '
                   'provider.')
        c.ignore('properties')

    with self.argument_context('healthcareapis workspace private-endpoint-connection delete') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')
        c.argument('private_endpoint_connection_name',
                   options_list=['--name', '-n', '--private-endpoint-connection-name'],
                   type=str, help='The name of the private endpoint connection '
                   'associated with the Azure resource', id_part='child_name_1')

    with self.argument_context('healthcareapis workspace private-endpoint-connection wait') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')
        c.argument('private_endpoint_connection_name',
                   options_list=['--name', '-n', '--private-endpoint-connection-name'],
                   type=str, help='The name of the private endpoint connection '
                   'associated with the Azure resource', id_part='child_name_1')

    with self.argument_context('healthcareapis workspace private-link-resource list') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.')

    with self.argument_context('healthcareapis workspace private-link-resource show') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('workspace_name', type=str, help='The name of workspace resource.', id_part='name')
        c.argument('group_name', type=str, help='The name of the private link resource group.',
                   id_part='child_name_1')
