package npdmodel

type ProviderHeaderResponse struct {
	ResultStatus string             `json:"resultStatus"`
	Count        CountResponse      `json:"counts"`
	Providers    []ProviderResponse `json:"providers"`
	FacetFields  []FacetField       `json:"facetEntries"`
}

type CountResponse struct {
	Total  string `json:"total"`
	Groups string `json:"groups"`
}

type FacetField struct {
	Name         string              `json:"name"`
	FacetEntries []map[string]string `json:"facetEntries"`
}

type ProviderResponse struct {
	MukID                     string                     `json:"mukId"`
	FivePartKeyGroups         []PartKeyGroup             `json:"fivePartKeyGroups"`
	OrgName                   string                     `json:"orgName"`
	Gender                    string                     `json:"gender"`
	AcceptNewPatients         string                     `json:"acceptNewPatients"`
	ProviderName              string                     `json:"providerName"`
	FirstName                 string                     `json:"firstName"`
	LastName                  string                     `json:"lastName"`
	MiddleName                string                     `json:"middleName"`
	ProviderTitle             string                     `json:"providerTitle"`
	StreetName1               string                     `json:"streetName_1"`
	StreetName2               string                     `json:"streetName_2"`
	CityName                  string                     `json:"cityName"`
	State                     string                     `json:"state"`
	ZipCode                   string                     `json:"zipCode"`
	Country                   string                     `json:"country"`
	Latitude                  string                     `json:"latitude"`
	Longitude                 string                     `json:"longitude"`
	PhoneNumber               string                     `json:"phoneNumber"`
	ProviderEntityName        string                     `json:"providerEntityName"`
	ProviderEntityCode        string                     `json:"providerEntityCode"`
	ProviderTypeCode          []ProviderTypeCode         `json:"providerTypeCode"`
	Distance                  string                     `json:"distance"`
	AvailabilityOfCost        string                     `json:"availabilityOfCost"`
	TDDPhoneNumber            string                     `json:"tddPhoneNumber"`
	ExtendedOfficeHours       string                     `json:"extendedOfficeHours"`
	ProviderCountyCode        string                     `json:"providerCountyCode"`
	ProviderCountyName        string                     `json:"providerCountyName"`
	HospitalAffiliationNames  []HospitalAffiliationNames `json:"hospitalAffiliationNames"`
	ProviderAffiliationNumber string                     `json:"providerAffiliationNumber"`
	ProviderAffiliationName   string                     `json:"providerAffiliationName"`
	LanguagesSpoken           []Languages                `json:"languagesSpoken"`
	OfficeLanguagesSpoken     []Languages                `json:"officeLanguagesSpoken"`
	MedSchool                 string                     `json:"medSchool"`
	MedSchoolYear             string                     `json:"medSchoolYear"`
	Internship                string                     `json:"internship"`
	Residence                 string                     `json:"residency"`
	Specialty1                string                     `json:"specialty1"`
	Specialty2                string                     `json:"specialty2"`
	Specialty3                string                     `json:"specialty3"`
	Specialty4                string                     `json:"specialty4"`
	Certification1            string                     `json:"certification1"`
	Certification2            string                     `json:"certification2"`
	Certification3            string                     `json:"certification3"`
	Certification4            string                     `json:"certification4"`
}

type HospitalAffiliationNames struct {
	HospAffProvOrgName string `json:"hospAffProvOrgName"`
}

type Languages struct {
	Code string `json:"code"`
}

type ProviderTypeCode struct {
	Code string `json:"code"`
}

type PartKeyGroup struct {
	ProviderNum           string `json:"providerNum"`
	ProviderNumSuffix     string `json:"providerNumSuffix"`
	LocationSeqNum        string `json:"locationSeqNum"`
	PlanCode              string `json:"planCode"`
	ProductID             string `json:"productId"`
	TreatmentCategoryCode string `json:"treatmentCategoryCode"`
}

// ProviderSearchParams entity data
type ProviderSearchParams struct {
	Name                      string
	AlphaPrefix               string
	SearchBy                  string
	Specialty                 string
	Languages                 string
	OfficeLanguages           string
	Gender                    string
	AcceptNewPatients         string
	TreatmentCategoryCode     string
	SummaryScore              string
	AvailabilityOfCost        string
	AvailabilityOfQuality     string
	ExtendedOfficeHours       string
	HospitalAffiliation       string
	ProviderAffiliation       string
	ProviderEntityName        string
	NameRange                 string
	BluPhyRcgIndicator        string
	Latitude                  float64
	Longitude                 float64
	Distance                  int64
	Offset                    int64
	Limit                     int64
	SortBy                    string
	FacetAcceptNewPatients    string
	FacetGender               string
	FacetExtendedOfficeHours  string
	FacetProviderEntityName   string
	FacetSummaryScore         string
	FacetLanguage             string
	FacetOfficeLanguages      string
	FacetHospitalAffiliations string
	FacetProviderAffiliations string
}
