Files
fm_be/internal/transport/http/dto/patient_data_dto.go
2026-07-16 22:16:45 +07:00

115 lines
6.7 KiB
Go

package dto
// JSON:API PatientData DTOs
type PatientDataOPC struct {
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Title string `json:"title,omitempty" example:"Primary OPC"`
}
type PatientDataInsuranceDetail struct {
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
HealthInsuranceCompanyID string `json:"health_insurance_companies_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
FederalStateID string `json:"federal_state_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
HealthInsuranceCompany *InsurancePatientDataHealthInsuranceCompany `json:"health_insurance_company,omitempty"`
FederalState *InsurancePatientDataFederalState `json:"federal_state,omitempty"`
}
type PatientDataAttributes struct {
FamilyName string `json:"family_name" example:"Muster"`
FirstName string `json:"first_name" example:"Max"`
OPCId string `json:"opc_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
BirthDate string `json:"birth_date,omitempty" example:"1990-01-15"`
Age *int `json:"age,omitempty" example:"35"`
Gender string `json:"gender" example:"male"`
Street string `json:"street,omitempty" example:"Hauptstraße 1"`
SVNR string `json:"svnr,omitempty" example:"1234150190"`
Email string `json:"email,omitempty" example:"max.muster@example.com"`
Phone string `json:"phone,omitempty" example:"+431234567"`
CoInsured bool `json:"co_insured" example:"false"`
InsurancePatientDataId string `json:"insurance_patient_data_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
OPC *PatientDataOPC `json:"opc,omitempty"`
InsurancePatientData *PatientDataInsuranceDetail `json:"insurance_patient_data,omitempty"`
CreatedAt string `json:"created_at,omitempty" example:"2026-03-12T03:04:05Z"`
CreatedBy string `json:"created_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
UpdatedAt string `json:"updated_at,omitempty" example:"2026-03-12T03:04:05Z"`
UpdatedBy string `json:"updated_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
DeletedAt string `json:"deleted_at,omitempty" example:"2026-03-12T03:04:05Z"`
DeletedBy string `json:"deleted_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
}
type PatientDataResource struct {
Type string `json:"type" example:"patient_data"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes PatientDataAttributes `json:"attributes"`
}
type PatientDataResponse struct {
Data PatientDataResource `json:"data"`
}
type PatientDataListResponse struct {
Data []PatientDataResource `json:"data"`
Meta struct {
PageNumber int `json:"page_number" example:"1"`
PageSize int `json:"page_size" example:"20"`
Total int64 `json:"total" example:"120"`
} `json:"meta"`
}
type PatientDataDataTableResponse struct {
Data []PatientDataResource `json:"data"`
Meta struct {
Draw int `json:"draw" example:"1"`
RecordsTotal int64 `json:"records_total" example:"120"`
RecordsFiltered int64 `json:"records_filtered" example:"12"`
} `json:"meta"`
}
type PatientDataCreateAttributes struct {
FamilyName string `json:"family_name" validate:"required" example:"Muster"`
FirstName string `json:"first_name" validate:"required" example:"Max"`
OPCId *string `json:"opc_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
BirthDate *string `json:"birth_date,omitempty" example:"1990-01-15"`
Gender string `json:"gender" validate:"required,oneof=male female" example:"male"`
Street *string `json:"street,omitempty" example:"Hauptstraße 1"`
SVNR *string `json:"svnr,omitempty" example:"1234150190"`
Email *string `json:"email,omitempty" example:"max.muster@example.com"`
Phone *string `json:"phone,omitempty" example:"+431234567"`
CoInsured *bool `json:"co_insured,omitempty" example:"false"`
InsurancePatientDataId *string `json:"insurance_patient_data_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
}
type PatientDataCreateData struct {
Type string `json:"type" validate:"required,oneof=patient_data_create patient_data" example:"patient_data_create"`
Attributes PatientDataCreateAttributes `json:"attributes" validate:"required"`
}
type PatientDataCreateRequest struct {
Data PatientDataCreateData `json:"data" validate:"required"`
}
type PatientDataUpdateAttributes struct {
FamilyName *string `json:"family_name,omitempty" example:"Muster"`
FirstName *string `json:"first_name,omitempty" example:"Max"`
OPCId *string `json:"opc_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
BirthDate *string `json:"birth_date,omitempty" example:"1990-01-15"`
Gender *string `json:"gender,omitempty" example:"male"`
Street *string `json:"street,omitempty" example:"Hauptstraße 1"`
SVNR *string `json:"svnr,omitempty" example:"1234150190"`
Email *string `json:"email,omitempty" example:"max.muster@example.com"`
Phone *string `json:"phone,omitempty" example:"+431234567"`
CoInsured *bool `json:"co_insured,omitempty" example:"false"`
InsurancePatientDataId *string `json:"insurance_patient_data_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
}
type PatientDataUpdateData struct {
Type string `json:"type" validate:"required,oneof=patient_data_update patient_data" example:"patient_data_update"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes PatientDataUpdateAttributes `json:"attributes" validate:"required"`
}
type PatientDataUpdateRequest struct {
Data PatientDataUpdateData `json:"data" validate:"required"`
}