package medicationstatement

import (
	"encoding/json"
	"fmt"
	"time"
)

// TODO: Sesuaikan dengan payload internal API MedicationStatement
func MapToInternalAPI(dbData *MedicationStatementDB, orgID string) map[string]interface{} {
	waktu := time.Now()
	if dbData.TglDicatat.Valid {
		waktu = dbData.TglDicatat.Time
	}
	return map[string]interface{}{
		"medicationstatement_id": fmt.Sprintf("%d", dbData.IdxRiwayatObat),
		"encounter_id":           fmt.Sprintf("%d", dbData.IdxDaftar),
		"patient_id":             dbData.NoMR.String,
		"medication_code":        dbData.KFA.String,
		"date_asserted":          waktu.Format(time.RFC3339),
		"dosage_text":            dbData.Instruksi.String,
	}
}

func MapToSyncLog(idx int64, fhirID string, reqPayload interface{}, respBody []byte, status string, errMsg string) MedicationStatementSyncLog {
	reqBytes, _ := json.MarshalIndent(reqPayload, "", "  ")
	return MedicationStatementSyncLog{
		IdxRiwayatObat:        idx,
		MedicationStatementID: fhirID,
		RequestPayload:        string(reqBytes),
		ResponsePayload:       string(respBody),
		Status:                status,
		ErrorMessage:          errMsg,
	}
}
