package patient

type Patient struct {
	ResourceType string `json:"resourceType"`
	// Meta         Meta   `json:"meta"`
	// Identifier           []Identifier   `json:"identifier"`
	Active bool `json:"active"`
	// Name                 []HumanName    `json:"name"`
	// Telecom              []ContactPoint `json:"telecom"`
	Gender       string `json:"gender" gorm:"size:10"`
	BirthDate    string `json:"birthDate"`
	DeceasedBool bool   `json:"deceasedBoolean"`
	// Address              []Address      `json:"address"`
	// MaritalStatus        MaritalStatus `json:"maritalStatus"`
	MultipleBirthInteger int `json:"multipleBirthInteger"`
	// Contact              []Contact       `json:"contact"`
	// Communication []Communication `json:"communication"`
	// Extension     []Extension     `json:"extension"`
}

type Meta struct {
	Profile []string `json:"profile"`
}

type Identifier struct {
	Use    string `json:"use"`
	System string `json:"system"`
	Value  string `json:"value"`
}

type HumanName struct {
	Use  string `json:"use"`
	Text string `json:"text"`
}

type ContactPoint struct {
	System string `json:"system"`
	Value  string `json:"value"`
	Use    string `json:"use"`
}

type Address struct {
	Use        string      `json:"use"`
	Line       []string    `json:"line"`
	City       string      `json:"city"`
	PostalCode string      `json:"postalCode"`
	Country    string      `json:"country"`
	Extension  []Extension `json:"extension"`
}

type Extension struct {
	URL          string         `json:"url"`
	Extension    []SubExtension `json:"extension,omitempty"`
	ValueCode    string         `json:"valueCode,omitempty"`
	ValueAddress *Address       `json:"valueAddress,omitempty"`
}

type SubExtension struct {
	URL       string `json:"url"`
	ValueCode string `json:"valueCode"`
}

type MaritalStatus struct {
	Coding []Coding `json:"coding"`
	Text   string   `json:"text"`
}

type Coding struct {
	System  string `json:"system"`
	Code    string `json:"code"`
	Display string `json:"display,omitempty"`
}

type Contact struct {
	Relationship []Relationship `json:"relationship"`
	Name         HumanName      `json:"name"`
	Telecom      []ContactPoint `json:"telecom"`
}

type Relationship struct {
	Coding []Coding `json:"coding"`
}

type Communication struct {
	Language  Language `json:"language"`
	Preferred bool     `json:"preferred"`
}

type Language struct {
	Coding []Coding `json:"coding"`
	Text   string   `json:"text"`
}
