
import { ApiProperty } from '@nestjs/swagger';

export class AddressDto {
  @ApiProperty({ example: 'Vjcuktxmgxkt', description: 'Address line of the patient' })
  line: string;

  @ApiProperty({ example: 'TAMIL NADU', description: 'State of the patient' })
  state: string;

  @ApiProperty({ example: null, description: 'Pincode of the patient' })
  pincode: string | null;

  @ApiProperty({ example: 'MADURAI', description: 'District of the patient' })
  district: string;
}

export class PatientDto {
  @ApiProperty({ example: 'VELU KARTHICK', description: 'Name of the patient' })
  name: string;

  @ApiProperty({ example: 'M', description: 'Gender of the patient' })
  gender: string;

  @ApiProperty({ type: AddressDto, description: 'Address details of the patient' })
  address: AddressDto;

  @ApiProperty({ example: null, description: 'ABHA number of the patient' })
  abhaNumber: string | null;

  @ApiProperty({ example: '1', description: 'Day of birth of the patient' })
  dayOfBirth: string;

  @ApiProperty({ example: 'vkarthick3@sbx', description: 'ABHA address of the patient' })
  abhaAddress: string;

  @ApiProperty({ example: '7092327667', description: 'Phone number of the patient' })
  phoneNumber: string;

  @ApiProperty({ example: '1995', description: 'Year of birth of the patient' })
  yearOfBirth: string;

  @ApiProperty({ example: '3', description: 'Month of birth of the patient' })
  monthOfBirth: string;
}

export class MetaDataDto {
  @ApiProperty({ example: 'Blocktracksbx03', description: 'HIP ID for the patient' })
  hipId: string;

  @ApiProperty({ example: 'abdulkalam@hpr.abdm', description: 'HPR ID for the practitioner' })
  hprId: string;

  @ApiProperty({ example: '1', description: 'Context identifier' })
  context: string;

  @ApiProperty({ example: '-31.678', description: 'Latitude coordinate' })
  latitude: string;

  @ApiProperty({ example: '51.498', description: 'Longitude coordinate' })
  longitude: string;
}

export class ProfileDto {
  @ApiProperty({ type: PatientDto, description: 'Patient profile details' })
  patient: PatientDto;
}

export class CreateScanAndShareAppointmentTokenDto {
  @ApiProperty({ example: 'PROFILE_SHARE', description: 'Intent of the request' })
  intent: string;

  @ApiProperty({ type: ProfileDto, description: 'Profile information' })
  profile: ProfileDto;

  @ApiProperty({ type: MetaDataDto, description: 'Additional metadata information' })
  metaData: MetaDataDto;
}
