import 'package:doctor_app_flutter/util/date-utils.dart';

class MyReferralPatientModel {
  dynamic rowID;
  int? projectID;
  int? lineItemNo;
  int? doctorID;
  int? patientID;
  String? doctorName;
  dynamic doctorNameN;
  String? firstName;
  String? middleName;
  String? lastName;
  dynamic firstNameN;
  dynamic middleNameN;
  dynamic lastNameN;
  int? gender;
  String? dateofBirth;
  String? mobileNumber;
  String? emailAddress;
  String? patientIdentificationNo;
  int? patientType;
  String? admissionNo;
  String? admissionDate;
  String? roomID;
  String? bedID;
  dynamic nursingStationID;
  dynamic description;
  String? nationalityName;
  dynamic nationalityNameN;
  String? clinicDescription;
  String? clinicDescriptionN;
  int? referralDoctor;
  int? referringDoctor;
  int? referralClinic;
  int? referringClinic;
  int? referralStatus;
  DateTime? referralDate;
  String? referringDoctorRemarks;
  String? referredDoctorRemarks;
  String? referralResponseOn;
  int? priority;
  int? frequency;
  String? mAXResponseTime;
  int? episodeID;
  int? appointmentNo;
  String? appointmentDate;
  int? appointmentType;
  int? patientMRN;
  String? createdOn;
  int? clinicID;
  String? nationalityID;
  String? age;
  String? doctorImageURL;
  String? frequencyDescription;
  String? genderDescription;
  bool? isDoctorLate;
  bool? isDoctorResponse;
  String? nationalityFlagURL;
  String? nursingStationName;
  String? priorityDescription;
  String? referringClinicDescription;
  String? referringDoctorName;
  int? referalStatus;
  String? sourceSetupID;
  int? sourceProjectId;
  String? targetSetupID;
  int? targetProjectId;
  int? targetClinicID;
  int? targetDoctorID;
  int? sourceAppointmentNo;
  int? targetAppointmentNo;
  String? remarksFromSource;

  MyReferralPatientModel(
      {this.rowID,
      this.projectID,
      this.lineItemNo,
      this.doctorID,
      this.patientID,
      this.doctorName,
      this.doctorNameN,
      this.firstName,
      this.middleName,
      this.lastName,
      this.firstNameN,
      this.middleNameN,
      this.lastNameN,
      this.gender,
      this.dateofBirth,
      this.mobileNumber,
      this.emailAddress,
      this.patientIdentificationNo,
      this.patientType,
      this.admissionNo,
      this.admissionDate,
      this.roomID,
      this.bedID,
      this.nursingStationID,
      this.description,
      this.nationalityName,
      this.nationalityNameN,
      this.clinicDescription,
      this.clinicDescriptionN,
      this.referralDoctor,
      this.referringDoctor,
      this.referralClinic,
      this.referringClinic,
      this.referralStatus,
      this.referralDate,
      this.referringDoctorRemarks,
      this.referredDoctorRemarks,
      this.referralResponseOn,
      this.priority,
      this.frequency,
      this.mAXResponseTime,
      this.episodeID,
      this.appointmentNo,
      this.appointmentDate,
      this.appointmentType,
      this.patientMRN,
      this.createdOn,
      this.clinicID,
      this.nationalityID,
      this.age,
      this.doctorImageURL,
      this.frequencyDescription,
      this.genderDescription,
      this.isDoctorLate,
      this.isDoctorResponse,
      this.nationalityFlagURL,
      this.nursingStationName,
      this.priorityDescription,
      this.referringClinicDescription,
      this.referringDoctorName,
      this.referalStatus,
      this.sourceSetupID,
      this.sourceAppointmentNo,
      this.sourceProjectId,
      this.targetProjectId,
      this.targetAppointmentNo,
      this.targetClinicID,
      this.targetSetupID,
      this.targetDoctorID,
      this.remarksFromSource});

  MyReferralPatientModel.fromJson(Map<String?, dynamic> json) {
    rowID = json['RowID'];
    referalStatus = json['ReferalStatus'];
    projectID = json['ProjectID'];
    lineItemNo = json['LineItemNo'];
    doctorID = json['DoctorID'];
    patientID = json['PatientID'];
    doctorName = json['DoctorName'];
    doctorNameN = json['DoctorNameN'];
    firstName = json['FirstName'];
    middleName = json['MiddleName'];
    lastName = json['LastName'];
    firstNameN = json['FirstNameN'];
    middleNameN = json['MiddleNameN'];
    lastNameN = json['LastNameN'];
    gender = json['Gender'];
    dateofBirth = json['DateofBirth'];
    mobileNumber = json['MobileNumber'];
    emailAddress = json['EmailAddress'];
    patientIdentificationNo = json['PatientIdentificationNo'];
    patientType = json['PatientType'];
    admissionNo = json['AdmissionNo'];
    admissionDate = json['AdmissionDate'];
    roomID = json['RoomID'];
    bedID = json['BedID'];
    nursingStationID = json['NursingStationID'];
    description = json['Description'];
    nationalityName = json['NationalityName'];
    nationalityNameN = json['NationalityNameN'];
    clinicDescription = json['ClinicDescription'];
    clinicDescriptionN = json['ClinicDescriptionN'];
    referralDoctor = json['ReferralDoctor'];
    referringDoctor = json['ReferringDoctor'];
    referralClinic = json['ReferralClinic'];
    referringClinic = json['ReferringClinic'];
    referralStatus = json["ReferralStatus"] is String
        ? json['ReferralStatus'] == "Accepted"
            ? 46
            : json['ReferralStatus'] == "Pending"
                ? 1
                : 0
        : json["ReferralStatus"];
    try {
      referralDate = AppDateUtils.getDateTimeFromString(json['ReferralDate']);
    } catch (e) {
      referralDate = AppDateUtils.convertStringToDate(json['ReferralDate']);
    } finally {
      referralDate = DateTime.now();
    }

    referringDoctorRemarks = json['ReferringDoctorRemarks'];
    referredDoctorRemarks = json['ReferredDoctorRemarks'];
    referralResponseOn = json['ReferralResponseOn'];
    priority = json['Priority'];
    frequency = json['Frequency'];
    mAXResponseTime = json['MAXResponseTime'];
    episodeID = json['EpisodeID'];
    appointmentNo = json['AppointmentNo'];
    appointmentDate = json['AppointmentDate'];
    appointmentType = json['AppointmentType'];
    patientMRN = json['PatientMRN'];
    createdOn = json['CreatedOn'];
    clinicID = json['ClinicID'];
    nationalityID = json['NationalityID'];
    age = json['Age'];
    doctorImageURL = json['DoctorImageURL'];
    frequencyDescription = json['FrequencyDescription'];
    genderDescription = json['GenderDescription'];
    isDoctorLate = json['IsDoctorLate'];
    isDoctorResponse = json['IsDoctorResponse'];
    nationalityFlagURL = json['NationalityFlagURL'];
    nursingStationName = json['NursingStationName'];
    priorityDescription = json['PriorityDescription'];
    referringClinicDescription = json['ReferringClinicDescription'];
    referringDoctorName = json['ReferringDoctorName'];
    sourceSetupID = json['SourceSetupID'];
    sourceProjectId = json['SourceProjectId'];
    targetSetupID = json['TargetSetupID'];
    targetProjectId = json['TargetProjectId'];
    targetClinicID = json['TargetClinicID'];
    targetDoctorID = json['TargetDoctorID'];
    sourceAppointmentNo = json['SourceAppointmentNo'];
    targetAppointmentNo = json['TargetAppointmentNo'];
    remarksFromSource = json['RemarksFromSource'];
  }

  Map<String?, dynamic> toJson() {
    final Map<String?, dynamic> data = new Map<String?, dynamic>();
    data['RowID'] = this.rowID;
    data['ReferalStatus'] = this.referalStatus;
    data['ProjectID'] = this.projectID;
    data['LineItemNo'] = this.lineItemNo;
    data['DoctorID'] = this.doctorID;
    data['PatientID'] = this.patientID;
    data['DoctorName'] = this.doctorName;
    data['DoctorNameN'] = this.doctorNameN;
    data['FirstName'] = this.firstName;
    data['MiddleName'] = this.middleName;
    data['LastName'] = this.lastName;
    data['FirstNameN'] = this.firstNameN;
    data['MiddleNameN'] = this.middleNameN;
    data['LastNameN'] = this.lastNameN;
    data['Gender'] = this.gender;
    data['DateofBirth'] = this.dateofBirth;
    data['MobileNumber'] = this.mobileNumber;
    data['EmailAddress'] = this.emailAddress;
    data['PatientIdentificationNo'] = this.patientIdentificationNo;
    data['PatientType'] = this.patientType;
    data['AdmissionNo'] = this.admissionNo;
    data['AdmissionDate'] = this.admissionDate;
    data['RoomID'] = this.roomID;
    data['BedID'] = this.bedID;
    data['NursingStationID'] = this.nursingStationID;
    data['Description'] = this.description;
    data['NationalityName'] = this.nationalityName;
    data['NationalityNameN'] = this.nationalityNameN;
    data['ClinicDescription'] = this.clinicDescription;
    data['ClinicDescriptionN'] = this.clinicDescriptionN;
    data['ReferralDoctor'] = this.referralDoctor;
    data['ReferringDoctor'] = this.referringDoctor;
    data['ReferralClinic'] = this.referralClinic;
    data['ReferringClinic'] = this.referringClinic;
    data['ReferralStatus'] = this.referralStatus;
    data['ReferralDate'] = this.referralDate;
    data['ReferringDoctorRemarks'] = this.referringDoctorRemarks;
    data['ReferredDoctorRemarks'] = this.referredDoctorRemarks;
    data['ReferralResponseOn'] = this.referralResponseOn;
    data['Priority'] = this.priority;
    data['Frequency'] = this.frequency;
    data['MAXResponseTime'] = this.mAXResponseTime;
    data['EpisodeID'] = this.episodeID;
    data['AppointmentNo'] = this.appointmentNo;
    data['AppointmentDate'] = this.appointmentDate;
    data['AppointmentType'] = this.appointmentType;
    data['PatientMRN'] = this.patientMRN;
    data['CreatedOn'] = this.createdOn;
    data['ClinicID'] = this.clinicID;
    data['NationalityID'] = this.nationalityID;
    data['Age'] = this.age;
    data['DoctorImageURL'] = this.doctorImageURL;
    data['FrequencyDescription'] = this.frequencyDescription;
    data['GenderDescription'] = this.genderDescription;
    data['IsDoctorLate'] = this.isDoctorLate;
    data['IsDoctorResponse'] = this.isDoctorResponse;
    data['NationalityFlagURL'] = this.nationalityFlagURL;
    data['NursingStationName'] = this.nursingStationName;
    data['PriorityDescription'] = this.priorityDescription;
    data['ReferringClinicDescription'] = this.referringClinicDescription;
    data['ReferringDoctorName'] = this.referringDoctorName;
    data['SourceSetupID'] = this.sourceSetupID;
    data['SourceProjectId'] = this.sourceProjectId;
    data['TargetSetupID'] = this.targetSetupID;
    data['TargetProjectId'] = this.targetProjectId;
    data['TargetClinicID'] = this.targetClinicID;
    data['TargetDoctorID'] = this.targetDoctorID;
    data['SourceAppointmentNo'] = this.sourceAppointmentNo;
    data['TargetAppointmentNo'] = this.targetAppointmentNo;
    data['RemarksFromSource'] = this.remarksFromSource;
    return data;
  }

  get patientName {
    return this.firstName! + " " + this.lastName!;
  }
}
