import { fetchWrapper } from "@/shared/fetchWrapper";
import moment from "moment";
export function requestCreateMedicalCard(entry, key, id) {
  const url = `medical_card/${key}/create/`;
  let arrayValue;
  if (["tonometry", "dental_bite", "dmf_index"].includes(key)) {
    arrayValue = entry.split(",");
  }
  switch (key) {
    case "complaints":
    case "medications_taken":
    case "disease_progress":
    case "visual_examination":
    case "diagnostic_findings":
    case "survey_plan":
    case "treatment_plan":
    case "treatment_protocol":
      return fetchWrapper.post(url, {
        title: entry,
        description: entry,
        medical_history: id,
      });
    case "thermometry":
      return fetchWrapper.post(url, {
        title: entry,
        temperature: Number(entry),
        medical_history: id,
      });
    case "tonometry":
      return fetchWrapper.post(url, {
        title: entry,
        sys: Number(arrayValue[0]),
        dia: Number(arrayValue[1]),
        pul: Number(arrayValue[2]),
        medical_history: id,
      });
    case "dental_bite":
      return fetchWrapper.post(url, {
        custom: arrayValue[0],
        physiological: arrayValue[1],
        abnormal: arrayValue[2],
        medical_history: id,
      });
    case "dmf_index":
      return fetchWrapper.post(url, {
        caries: Number(arrayValue[0]),
        filling: Number(arrayValue[1]),
        remote: Number(arrayValue[2]),
        medical_history: id,
      });
    case "clinical_diagnosis":
      return fetchWrapper.post(url, {
        title: entry,
        description: "string",
        medical_history: id,
        icd10: id,
      });
    case "dental_formula":
      return fetchWrapper.post(url, {
        ...entry,
        tooth_mobility: entry.tooth_mobility ? entry.tooth_mobility.label : "",
        tooth_number: entry.tooth_number,
        medical_history: id,
      });
    case "registration_address":
      return fetchWrapper.post(`general/address/create/`, {
        ...entry,
        person: id,
        registration_flg: true,
      });
    case "temporary_address":
      return fetchWrapper.post(`general/address/create/`, {
        ...entry,
        person: id,
        temporary_registration_flg: true,
      });
    case "identity_document":
      return fetchWrapper.post(`general/identity_document/create/`, {
        ...entry,
        person: id,
      });
    case "insurance_policy":
      return fetchWrapper.post(`general/insurance_policy/create/`, {
        ...entry,
        title: "string",
        person: id,
      });
  }
}

export function requestUpdateMedicalCard(entry, key, id) {
  const url = `medical_card/${key}/${id}/update/`;
  let arrayValue;
  if (["tonometry", "dental_bite", "dmf_index"].includes(key)) {
    arrayValue = entry.split(",");
  }
  switch (key) {
    case "complaints":
    case "medications_taken":
    case "disease_progress":
    case "visual_examination":
    case "diagnostic_findings":
    case "survey_plan":
    case "treatment_plan":
    case "treatment_protocol":
      return fetchWrapper.post(url, {
        title: entry,
        description: entry,
      });
    case "thermometry":
      return fetchWrapper.post(url, {
        title: entry,
        temperature: Number(entry),
      });
    case "tonometry":
      return fetchWrapper.post(url, {
        title: entry,
        sys: Number(arrayValue[0]),
        dia: Number(arrayValue[1]),
        pul: Number(arrayValue[2]),
      });
    case "dental_bite":
      return fetchWrapper.post(url, {
        custom: entry,
        physiological: entry,
        abnormal: entry,
      });
    case "dmf_index":
      return fetchWrapper.post(url, {
        caries: Number(entry),
        filling: Number(entry),
        remote: Number(entry),
      });
    case "clinical_diagnosis":
      return fetchWrapper.post(url, {
        title: entry,
        description: "string",
        icd10: id,
      });
    case "dental_formula":
      return fetchWrapper.post(url, {
        ...entry,
        tooth_mobility: entry.tooth_mobility ? entry.tooth_mobility.label : "",
        tooth_number: entry.tooth_number,
      });
    case "registration_address":
      return fetchWrapper.post(`general/address/${id}/update/`, {
        ...entry,
        registration_flg: true,
      });
    case "temporary_address":
      return fetchWrapper.post(`general/address/${id}/update/`, {
        ...entry,
        temporary_registration_flg: true,
      });
    case "identity_document":
      return fetchWrapper.post(`general/identity_document/${id}/update/`, {
        ...entry,
      });
    case "insurance_policy":
      return fetchWrapper.post(`general/insurance_policy/${id}/update/`, {
        ...entry,
        title: "string",
      });
    case "person":
      return fetchWrapper.post(`general/person/${id}/update/`, {
        ...entry,
      });
  }
}

export function getRequestDataPerson(person, dental) {
  const dataPersonRequest = {
    identity_document: {
      issued_by_org: person.issued_by_org,
      issued_by_org_code: person.issued_by_org_code,
      issued_by_date: moment(person.issued_by_date).format("YYYY-MM-DD"),
      number: person.number_series.split(" ")[1],
      series: person.number_series.split(" ")[0],
    },
    registration_address: {
      full_address: person.registration_address,
    },
    temporary_address: {
      full_address: person.temporary_address,
    },
    insurance_policy: {
      series: person.policy_series,
      number: person.policy_number,
      organization: person.policy_organization,
    },
    person: {
      insurance_number: person.insurance_number,
      benefit_code: person.benefit_code,
      allergic: dental.allergic,
    },
    agreement: {
      agreement: person.agreement,
    },
  };
  return dataPersonRequest;
}
export function getDentalEntiesValue(data, key) {
  switch (key) {
    case "complaints":
    case "medications_taken":
    case "disease_progress":
    case "visual_examination":
    case "diagnostic_findings":
    case "survey_plan":
    case "treatment_plan":
    case "treatment_protocol":
    case "clinical_diagnosis":
      return data?.description;
    case "thermometry":
      return `${data?.temperature}`;
    case "tonometry":
      return `${data?.sys},${data?.dia},${data?.pul}`;
    case "dental_bite":
      return `${data?.custom},${data?.physiological},${data?.abnormal}`;
    case "dmf_index":
      return data["index_calculation"];
    case "hygiene_index":
      return data["index_calculation"];
  }
}
