diff --git a/src/main/java/com/piuda/callcare/domain/medication/converter/MedicationConverter.java b/src/main/java/com/piuda/callcare/domain/medication/converter/MedicationConverter.java index 48d3245..9bfa8d5 100644 --- a/src/main/java/com/piuda/callcare/domain/medication/converter/MedicationConverter.java +++ b/src/main/java/com/piuda/callcare/domain/medication/converter/MedicationConverter.java @@ -25,6 +25,7 @@ public MedicationGroupItemResponse toGroupItemResponse(Medication medication) { medication.getStartDate(), medication.getEndDate(), medication.getTotalDays(), + medication.getUsageStorageInfo(), medication.getMemo() ); } diff --git a/src/main/java/com/piuda/callcare/domain/medication/dto/request/MedicationCreateRequest.java b/src/main/java/com/piuda/callcare/domain/medication/dto/request/MedicationCreateRequest.java index d6c55d9..4593b63 100644 --- a/src/main/java/com/piuda/callcare/domain/medication/dto/request/MedicationCreateRequest.java +++ b/src/main/java/com/piuda/callcare/domain/medication/dto/request/MedicationCreateRequest.java @@ -40,6 +40,6 @@ public record MedicationCreateRequest( @Schema(description = "병원 이름 — 직접 입력, 없으면 null") String hospitalName, - @Schema(description = "메모 (복용방법 + 보관방법 자동 생성 또는 사용자 직접 입력, 없으면 null)") + @Schema(description = "사용자 자유 입력 메모 (항상 빈값으로 시작, 없으면 null)") String memo ) {} diff --git a/src/main/java/com/piuda/callcare/domain/medication/dto/response/MedicationGroupItemResponse.java b/src/main/java/com/piuda/callcare/domain/medication/dto/response/MedicationGroupItemResponse.java index d5f5f74..a851253 100644 --- a/src/main/java/com/piuda/callcare/domain/medication/dto/response/MedicationGroupItemResponse.java +++ b/src/main/java/com/piuda/callcare/domain/medication/dto/response/MedicationGroupItemResponse.java @@ -34,6 +34,9 @@ public record MedicationGroupItemResponse( @Schema(description = "총 복용 일수 (없으면 null)") Integer totalDays, - @Schema(description = "메모 — OCR 자동 생성 또는 사용자 직접 입력 (없으면 null)") + @Schema(description = "복용법 + 보관법 자동 생성 — DrugInfo 연결 시에만 채워짐, OCR 등록 시 null") + String usageStorageInfo, + + @Schema(description = "사용자 자유 입력 메모 (없으면 null)") String memo ) {} diff --git a/src/main/java/com/piuda/callcare/domain/medication/entity/Medication.java b/src/main/java/com/piuda/callcare/domain/medication/entity/Medication.java index 72fbcdd..342c992 100644 --- a/src/main/java/com/piuda/callcare/domain/medication/entity/Medication.java +++ b/src/main/java/com/piuda/callcare/domain/medication/entity/Medication.java @@ -64,8 +64,11 @@ public class Medication extends BaseEntity { @Column(name = "prescription_date") private LocalDate prescriptionDate; // 처방 날짜 + @Column(name = "usage_storage_info", columnDefinition = "TEXT") + private String usageStorageInfo; // DrugInfo 연결 시 자동 생성 (복용법 + 보관법), OCR 등록 시 null + @Column(name = "memo", columnDefinition = "TEXT") - private String memo; // 복용 방법 + 보관법 자동 입력 + private String memo; // 사용자 자유 입력, 항상 빈값으로 시작 @Column(name = "is_active", nullable = false) private Boolean isActive; // 현재 복용 중인지 여부 (복용 종료 시 false로 변경) @@ -78,7 +81,8 @@ public Medication(Senior senior, String hospitalName, DrugInfo drugInfo, String drugName, String drugNickname, String drugType, String imageUrl, String dosagePerTime, Integer timesPerDay, Integer totalDays, LocalDate startDate, LocalDate endDate, - LocalDate prescriptionDate, String memo, Boolean isActive, Long ocrResultId) { + LocalDate prescriptionDate, String usageStorageInfo, String memo, + Boolean isActive, Long ocrResultId) { this.senior = senior; this.hospitalName = hospitalName; this.drugInfo = drugInfo; @@ -92,6 +96,7 @@ public Medication(Senior senior, String hospitalName, DrugInfo drugInfo, this.startDate = startDate; this.endDate = endDate; this.prescriptionDate = prescriptionDate; + this.usageStorageInfo = usageStorageInfo; this.memo = memo; this.isActive = isActive; this.ocrResultId = ocrResultId; diff --git a/src/main/java/com/piuda/callcare/domain/medication/service/command/MedicationCommandService.java b/src/main/java/com/piuda/callcare/domain/medication/service/command/MedicationCommandService.java index 2f15ba7..2fbe12e 100644 --- a/src/main/java/com/piuda/callcare/domain/medication/service/command/MedicationCommandService.java +++ b/src/main/java/com/piuda/callcare/domain/medication/service/command/MedicationCommandService.java @@ -64,9 +64,10 @@ private MedicationResponse doRegister(Long userId, MedicationCreateRequest reque .startDate(request.startDate()) .endDate(endDate) .prescriptionDate(request.prescriptionDate()) + .usageStorageInfo(buildUsageStorageInfo(drugInfo)) + .memo(request.memo()) .isActive(true) .ocrResultId(request.ocrResultId()) - .memo(request.memo()) .build(); Medication saved = medicationRepository.save(medication); @@ -105,4 +106,14 @@ private DrugInfo resolveDrugInfo(Long drugInfoId) { return drugInfoRepository.findById(drugInfoId) .orElseThrow(() -> new CallCareException(ErrorCode.DRUG_NOT_FOUND)); } + + private String buildUsageStorageInfo(DrugInfo drugInfo) { + if (drugInfo == null) return null; + String usage = drugInfo.getUseMethodQesitm(); + String deposit = drugInfo.getDepositMethodQesitm(); + if (usage == null && deposit == null) return null; + if (usage == null) return deposit; + if (deposit == null) return usage; + return usage + "\n\n" + deposit; + } }