diff --git a/src/main/java/com/doubleo/hospitalservice/domain/building/controller/BuildingController.java b/src/main/java/com/doubleo/hospitalservice/domain/building/controller/BuildingController.java index aaae10c..a42d759 100644 --- a/src/main/java/com/doubleo/hospitalservice/domain/building/controller/BuildingController.java +++ b/src/main/java/com/doubleo/hospitalservice/domain/building/controller/BuildingController.java @@ -5,6 +5,8 @@ import io.swagger.v3.oas.annotations.Operation; import java.util.List; import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.web.bind.annotation.*; @RestController @@ -18,7 +20,16 @@ public class BuildingController { @Operation( summary = "Get Buildings by Hospital Tenant ID", description = "병원 테넌트 id를 기준으로 건물 리스트를 조회하는 API") - public List buildingsGetByTenantId() { - return buildingService.getBuildingsByTenantId(); + public List buildingListGetByTenantId() { + return buildingService.getBuildingListByTenantId(); + } + + @GetMapping("/paged") + @Operation( + summary = "Get Paged Buildings by Hospital Tenant ID", + description = "병원 테넌트 id를 기준으로 건물 리스트를 페이지네이션하여 조회하는 API") + public Page pagedBuildingListByTenantIdGet( + Pageable pageable, @RequestParam(required = false) String keyword) { + return buildingService.getPagedBuildingListByTenantId(keyword, pageable); } } diff --git a/src/main/java/com/doubleo/hospitalservice/domain/building/repository/BuildingRepository.java b/src/main/java/com/doubleo/hospitalservice/domain/building/repository/BuildingRepository.java index dd29cb0..d0c5e44 100644 --- a/src/main/java/com/doubleo/hospitalservice/domain/building/repository/BuildingRepository.java +++ b/src/main/java/com/doubleo/hospitalservice/domain/building/repository/BuildingRepository.java @@ -3,6 +3,8 @@ import com.doubleo.hospitalservice.domain.building.domain.Building; import java.util.List; import java.util.Optional; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -10,5 +12,10 @@ public interface BuildingRepository extends JpaRepository { List findAllByTenantId(String tenantId); + Page findByTenantId(String tenantId, Pageable pageable); + + Page findByTenantIdAndBuildingNameContainingIgnoreCase( + String tenantId, String keyWord, Pageable pageable); + Optional findByTenantIdAndBuildingCode(String tenantId, String buildingCode); } diff --git a/src/main/java/com/doubleo/hospitalservice/domain/building/service/BuildingService.java b/src/main/java/com/doubleo/hospitalservice/domain/building/service/BuildingService.java index 7f3e69d..773da56 100644 --- a/src/main/java/com/doubleo/hospitalservice/domain/building/service/BuildingService.java +++ b/src/main/java/com/doubleo/hospitalservice/domain/building/service/BuildingService.java @@ -2,7 +2,11 @@ import com.doubleo.hospitalservice.domain.building.dto.response.BuildingInfoResponse; import java.util.List; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; public interface BuildingService { - List getBuildingsByTenantId(); + List getBuildingListByTenantId(); + + Page getPagedBuildingListByTenantId(String keyword, Pageable pageable); } diff --git a/src/main/java/com/doubleo/hospitalservice/domain/building/service/BuildingServiceImpl.java b/src/main/java/com/doubleo/hospitalservice/domain/building/service/BuildingServiceImpl.java index d825e5a..fa0317b 100644 --- a/src/main/java/com/doubleo/hospitalservice/domain/building/service/BuildingServiceImpl.java +++ b/src/main/java/com/doubleo/hospitalservice/domain/building/service/BuildingServiceImpl.java @@ -8,6 +8,8 @@ import jakarta.transaction.Transactional; import java.util.List; import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @Service @@ -20,7 +22,7 @@ public class BuildingServiceImpl implements BuildingService { // tenantId를 기반으로 소속 건물 리스트 조회 @Override - public List getBuildingsByTenantId() { + public List getBuildingListByTenantId() { String tenantId = tenantValidator.getTenantId(); @@ -28,4 +30,25 @@ public List getBuildingsByTenantId() { return buildings.stream().map(BuildingInfoResponse::from).toList(); } + + public Page getPagedBuildingListByTenantId( + String keyword, Pageable pageable) { + String tenantId = tenantValidator.getTenantId(); + Page buildings; + + if (keyword != null && !keyword.trim().isEmpty()) { + buildings = + buildingRepository.findByTenantIdAndBuildingNameContainingIgnoreCase( + tenantId, keyword, pageable); + } else { + buildings = buildingRepository.findByTenantId(tenantId, pageable); + } + + return buildings.map( + building -> + new BuildingInfoResponse( + building.getBuildingId(), + building.getBuildingName(), + building.getBuildingCode())); + } } diff --git a/src/main/java/com/doubleo/hospitalservice/global/config/web/WebConfig.java b/src/main/java/com/doubleo/hospitalservice/global/config/web/WebConfig.java new file mode 100644 index 0000000..a364fb1 --- /dev/null +++ b/src/main/java/com/doubleo/hospitalservice/global/config/web/WebConfig.java @@ -0,0 +1,21 @@ +package com.doubleo.hospitalservice.global.config.web; + +import java.util.List; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.web.PageableHandlerMethodArgumentResolver; +import org.springframework.web.method.support.HandlerMethodArgumentResolver; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class WebConfig implements WebMvcConfigurer { + + @Override + public void addArgumentResolvers(List resolvers) { + PageableHandlerMethodArgumentResolver resolver = + new PageableHandlerMethodArgumentResolver(); + resolver.setMaxPageSize(500); + resolver.setFallbackPageable(PageRequest.of(0, 10)); + resolvers.add(resolver); + } +} diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql index ccf0425..962c144 100644 --- a/src/main/resources/data.sql +++ b/src/main/resources/data.sql @@ -18,49 +18,49 @@ VALUES -- ========================== INSERT INTO building (tenant_id, building_name, building_code) VALUES -- 강북삼성병원 (3개) - ('SEO25NE01', '강북삼성병원 본관동', 'A'), - ('SEO25NE01', '강북삼성병원 암센터', 'B'), - ('SEO25NE01', '강북삼성병원 건강검진센터', 'C'), + ('SEO25NE01', '본관동', 'A'), + ('SEO25NE01', '암센터', 'B'), + ('SEO25NE01', '건강검진센터', 'C'), -- 건국대학교병원 (3개) - ('SEO25W102', '건국대학교병원 본관동', 'D'), - ('SEO25W102', '건국대학교병원 외래동', 'E'), - ('SEO25W102', '건국대학교병원 검진센터', 'F'), + ('SEO25W102', '본관동', 'D'), + ('SEO25W102', '외래동', 'E'), + ('SEO25W102', '검진센터', 'F'), -- 경희대학교병원 (3개) - ('SEO25ZG03', '경희대학교병원 본관동', 'G'), - ('SEO25ZG03', '경희대학교병원 심장센터', 'H'), - ('SEO25ZG03', '경희대학교병원 영상의학센터', 'I'), + ('SEO25ZG03', '본관동', 'G'), + ('SEO25ZG03', '심장센터', 'H'), + ('SEO25ZG03', '영상의학센터', 'I'), -- 고려대 구로병원 (2개) - ('SEO25NY04', '고려대 구로병원 본관동', 'J'), - ('SEO25NY04', '고려대 구로병원 암센터', 'K'), + ('SEO25NY04', '본관동', 'J'), + ('SEO25NY04', '암센터', 'K'), -- 삼성서울병원 (3개) - ('SEO259W05', '삼성서울병원 본관동', 'L'), - ('SEO259W05', '삼성서울병원 암센터', 'M'), - ('SEO259W05', '삼성서울병원 건강검진센터', 'N'), + ('SEO259W05', '본관동', 'L'), + ('SEO259W05', '암센터', 'M'), + ('SEO259W05', '건강검진센터', 'N'), -- 서울대학교병원 (2개) - ('SEO25KG06', '서울대학교병원 본관동', 'O'), - ('SEO25KG06', '서울대학교병원 연구동', 'P'), + ('SEO25KG06', '본관동', 'O'), + ('SEO25KG06', '연구동', 'P'), -- 연세대 신촌세브란스 (2개) - ('SEO25D107', '연세대 신촌세브란스 본관동', 'Q'), - ('SEO25D107', '연세대 신촌세브란스 입원동', 'R'), + ('SEO25D107', '본관동', 'Q'), + ('SEO25D107', '입원동', 'R'), -- 이화여대 목동병원 (2개) - ('SEO25JM08', '이화여대 목동병원 본관동', 'S'), - ('SEO25JM08', '이화여대 목동병원 통합센터', 'T'), + ('SEO25JM08', '본관동', 'S'), + ('SEO25JM08', '통합센터', 'T'), -- 서울아산병원 (3개) - ('SEO25LH09', '서울아산병원 본관동', 'U'), - ('SEO25LH09', '서울아산병원 내시경센터', 'V'), - ('SEO25LH09', '서울아산병원 진단검사의학센터', 'W'), + ('SEO25LH09', '본관동', 'U'), + ('SEO25LH09', '내시경센터', 'V'), + ('SEO25LH09', '진단검사의학센터', 'W'), -- 중앙대학교병원 (2개) - ('SEO25HG10', '중앙대학교병원 본관동', 'X'), - ('SEO25HG10', '중앙대학교병원 통합병동', 'Y'); + ('SEO25HG10', '본관동', 'X'), + ('SEO25HG10', '통합병동', 'Y'); -- ========================== -- DEPARTMENT 테이블 더미 데이터 @@ -101,182 +101,231 @@ INSERT INTO department (tenant_id, department_name, department_code) VALUES -- AREA 테이블 더미 데이터 -- ========================== INSERT INTO area (tenant_id, building_id, area_name, area_code) VALUES - ('SEO25NE01', 1, '수술실', 'A_03_01'), - ('SEO25NE01', 1, '영상의학센터', 'A_02_02'), - ('SEO25NE01', 1, '검사실', 'A_02_03'), - ('SEO25NE01', 1, 'CT실', 'A_02_04'), - ('SEO25NE01', 1, '영상의학센터', 'A_03_05'), - ('SEO25NE01', 2, '재활센터', 'B_02_01'), - ('SEO25NE01', 2, 'MRI실', 'B_03_02'), - ('SEO25NE01', 2, '병동', 'B_03_03'), - ('SEO25NE01', 2, '응급실', 'B_02_04'), - ('SEO25NE01', 2, '병동', 'B_02_05'), - ('SEO25NE01', 3, '수술실', 'C_03_01'), - ('SEO25NE01', 3, '입원실', 'C_01_02'), - ('SEO25NE01', 3, '진료실', 'C_01_03'), - ('SEO25NE01', 3, '내시경실', 'C_01_04'), - ('SEO25NE01', 3, '상담실', 'C_01_05'), - ('SEO25NE01', 3, 'X-ray실', 'C_01_06'), - ('SEO25W102', 4, 'CT실', 'D_01_01'), - ('SEO25W102', 4, '진료실', 'D_01_02'), - ('SEO25W102', 4, '입원실', 'D_01_03'), - ('SEO25W102', 4, 'CT실', 'D_02_04'), - ('SEO25W102', 4, '진료실', 'D_02_05'), - ('SEO25W102', 4, '내시경실', 'D_01_06'), - ('SEO25W102', 4, '검사실', 'D_02_07'), - ('SEO25W102', 5, 'MRI실', 'E_03_01'), - ('SEO25W102', 5, '중환자실', 'E_03_02'), - ('SEO25W102', 5, '응급실', 'E_03_03'), - ('SEO25W102', 5, '재활센터', 'E_03_04'), - ('SEO25W102', 5, 'CT실', 'E_03_05'), - ('SEO25W102', 5, 'CT실', 'E_03_06'), - ('SEO25W102', 6, '영상의학센터', 'F_02_01'), - ('SEO25W102', 6, 'X-ray실', 'F_02_02'), - ('SEO25W102', 6, '수술실', 'F_02_03'), - ('SEO25W102', 6, '초음파실', 'F_02_04'), - ('SEO25W102', 6, '병동', 'F_02_05'), - ('SEO25W102', 6, '검사실', 'F_02_06'), - ('SEO25W102', 6, '진료실', 'F_02_07'), - ('SEO25W102', 6, 'CT실', 'F_02_08'), - ('SEO25W102', 6, '진료실', 'F_02_09'), - ('SEO25ZG03', 7, '중환자실', 'G_02_01'), - ('SEO25ZG03', 7, '상담실', 'G_02_02'), - ('SEO25ZG03', 7, 'X-ray실', 'G_02_03'), - ('SEO25ZG03', 7, '상담실', 'G_01_04'), - ('SEO25ZG03', 7, '입원실', 'G_02_05'), - ('SEO25ZG03', 7, '영상의학센터', 'G_02_06'), - ('SEO25ZG03', 7, '입원실', 'G_02_07'), - ('SEO25ZG03', 8, '중환자실', 'H_02_01'), - ('SEO25ZG03', 8, 'MRI실', 'H_02_02'), - ('SEO25ZG03', 8, '초음파실', 'H_02_03'), - ('SEO25ZG03', 8, 'MRI실', 'H_02_04'), - ('SEO25ZG03', 8, '수술실', 'H_02_05'), - ('SEO25ZG03', 8, '응급실', 'H_02_06'), - ('SEO25ZG03', 8, '초음파실', 'H_02_07'), - ('SEO25ZG03', 8, '영상의학센터', 'H_02_08'), - ('SEO25ZG03', 9, '대기실', 'I_02_01'), - ('SEO25ZG03', 9, '입원실', 'I_03_02'), - ('SEO25ZG03', 9, '병동', 'I_02_03'), - ('SEO25ZG03', 9, '진료실', 'I_02_04'), - ('SEO25ZG03', 9, '수술실', 'I_03_05'), - ('SEO25NY04', 10, 'CT실', 'J_03_01'), - ('SEO25NY04', 10, '입원실', 'J_03_02'), - ('SEO25NY04', 10, 'X-ray실', 'J_03_03'), - ('SEO25NY04', 10, '재활센터', 'J_03_04'), - ('SEO25NY04', 10, '중환자실', 'J_03_05'), - ('SEO25NY04', 10, '응급실', 'J_02_06'), - ('SEO25NY04', 10, '병동', 'J_03_07'), - ('SEO25NY04', 11, '내시경실', 'K_02_01'), - ('SEO25NY04', 11, 'MRI실', 'K_03_02'), - ('SEO25NY04', 11, '대기실', 'K_03_03'), - ('SEO25NY04', 11, 'MRI실', 'K_03_04'), - ('SEO25NY04', 11, 'X-ray실', 'K_03_05'), - ('SEO259W05', 12, '수술실', 'L_03_01'), - ('SEO259W05', 12, '상담실', 'L_01_02'), - ('SEO259W05', 12, 'MRI실', 'L_01_03'), - ('SEO259W05', 12, '입원실', 'L_03_04'), - ('SEO259W05', 12, 'X-ray실', 'L_02_05'), - ('SEO259W05', 12, '재활센터', 'L_01_06'), - ('SEO259W05', 12, '영상의학센터', 'L_02_07'), - ('SEO259W05', 12, '영상의학센터', 'L_03_08'), - ('SEO259W05', 13, '검사실', 'M_03_01'), - ('SEO259W05', 13, 'MRI실', 'M_01_02'), - ('SEO259W05', 13, '중환자실', 'M_01_03'), - ('SEO259W05', 13, 'CT실', 'M_01_04'), - ('SEO259W05', 13, '내시경실', 'M_01_05'), - ('SEO259W05', 13, 'CT실', 'M_03_06'), - ('SEO259W05', 14, '검사실', 'N_02_01'), - ('SEO259W05', 14, '대기실', 'N_01_02'), - ('SEO259W05', 14, '병동', 'N_01_03'), - ('SEO259W05', 14, '상담실', 'N_02_04'), - ('SEO259W05', 14, '중환자실', 'N_03_05'), - ('SEO259W05', 14, '영상의학센터', 'N_02_06'), - ('SEO259W05', 14, '초음파실', 'N_03_07'), - ('SEO259W05', 14, '내시경실', 'N_03_08'), - ('SEO259W05', 14, '응급실', 'N_03_09'), - ('SEO25KG06', 15, 'MRI실', 'O_02_01'), - ('SEO25KG06', 15, '응급실', 'O_01_02'), - ('SEO25KG06', 15, '상담실', 'O_01_03'), - ('SEO25KG06', 15, '중환자실', 'O_03_04'), - ('SEO25KG06', 15, '입원실', 'O_02_05'), - ('SEO25KG06', 15, '검사실', 'O_01_06'), - ('SEO25KG06', 15, '재활센터', 'O_03_07'), - ('SEO25KG06', 16, '병동', 'P_01_01'), - ('SEO25KG06', 16, '상담실', 'P_01_02'), - ('SEO25KG06', 16, '중환자실', 'P_03_03'), - ('SEO25KG06', 16, '검사실', 'P_01_04'), - ('SEO25KG06', 16, '검사실', 'P_01_05'), - ('SEO25KG06', 16, '입원실', 'P_01_06'), - ('SEO25KG06', 16, '응급실', 'P_03_07'), - ('SEO25D107', 17, '영상의학센터', 'Q_01_01'), - ('SEO25D107', 17, '진료실', 'Q_02_02'), - ('SEO25D107', 17, '영상의학센터', 'Q_01_03'), - ('SEO25D107', 17, '영상의학센터', 'Q_01_04'), - ('SEO25D107', 17, 'X-ray실', 'Q_01_05'), - ('SEO25D107', 17, '초음파실', 'Q_03_06'), - ('SEO25D107', 17, '상담실', 'Q_02_07'), - ('SEO25D107', 17, '진료실', 'Q_02_08'), - ('SEO25D107', 18, '초음파실', 'R_01_01'), - ('SEO25D107', 18, 'MRI실', 'R_02_02'), - ('SEO25D107', 18, '채혈실', 'R_01_03'), - ('SEO25D107', 18, '상담실', 'R_01_04'), - ('SEO25D107', 18, '초음파실', 'R_01_05'), - ('SEO25D107', 18, '병동', 'R_02_06'), - ('SEO25D107', 18, '상담실', 'R_02_07'), - ('SEO25D107', 18, '상담실', 'R_01_08'), - ('SEO25D107', 18, '상담실', 'R_01_09'), - ('SEO25JM08', 19, '중환자실', 'S_01_01'), - ('SEO25JM08', 19, '내시경실', 'S_01_02'), - ('SEO25JM08', 19, 'X-ray실', 'S_03_03'), - ('SEO25JM08', 19, '중환자실', 'S_03_04'), - ('SEO25JM08', 19, '초음파실', 'S_01_05'), - ('SEO25JM08', 19, '응급실', 'S_03_06'), - ('SEO25JM08', 19, '진료실', 'S_01_07'), - ('SEO25JM08', 20, '재활센터', 'T_02_01'), - ('SEO25JM08', 20, '상담실', 'T_02_02'), - ('SEO25JM08', 20, '대기실', 'T_01_03'), - ('SEO25JM08', 20, '채혈실', 'T_03_04'), - ('SEO25JM08', 20, 'X-ray실', 'T_03_05'), - ('SEO25JM08', 20, '중환자실', 'T_01_06'), - ('SEO25JM08', 20, '초음파실', 'T_01_07'), - ('SEO25JM08', 20, '재활센터', 'T_01_08'), - ('SEO25JM08', 20, 'MRI실', 'T_01_09'), - ('SEO25JM08', 20, '진료실', 'T_03_10'), - ('SEO25LH09', 21, '입원실', 'U_01_01'), - ('SEO25LH09', 21, '재활센터', 'U_02_02'), - ('SEO25LH09', 21, '응급실', 'U_02_03'), - ('SEO25LH09', 21, '입원실', 'U_01_04'), - ('SEO25LH09', 21, '대기실', 'U_01_05'), - ('SEO25LH09', 21, 'CT실', 'U_02_06'), - ('SEO25LH09', 21, '검사실', 'U_01_07'), - ('SEO25LH09', 21, '채혈실', 'U_01_08'), - ('SEO25LH09', 21, '수술실', 'U_01_09'), - ('SEO25LH09', 22, '채혈실', 'V_01_01'), - ('SEO25LH09', 22, '중환자실', 'V_01_02'), - ('SEO25LH09', 22, '영상의학센터', 'V_01_03'), - ('SEO25LH09', 22, '재활센터', 'V_01_04'), - ('SEO25LH09', 22, '병동', 'V_01_05'), - ('SEO25LH09', 22, '내시경실', 'V_01_06'), - ('SEO25LH09', 22, '초음파실', 'V_01_07'), - ('SEO25LH09', 23, '초음파실', 'W_01_01'), - ('SEO25LH09', 23, 'CT실', 'W_02_02'), - ('SEO25LH09', 23, '상담실', 'W_02_03'), - ('SEO25LH09', 23, '채혈실', 'W_02_04'), - ('SEO25LH09', 23, '내시경실', 'W_02_05'), - ('SEO25LH09', 23, '병동', 'W_01_06'), - ('SEO25HG10', 24, '채혈실', 'X_02_01'), - ('SEO25HG10', 24, '재활센터', 'X_02_02'), - ('SEO25HG10', 24, '중환자실', 'X_02_03'), - ('SEO25HG10', 24, '상담실', 'X_02_04'), - ('SEO25HG10', 24, '수술실', 'X_02_05'), - ('SEO25HG10', 25, '응급실', 'Y_03_01'), - ('SEO25HG10', 25, '대기실', 'Y_03_02'), - ('SEO25HG10', 25, '재활센터', 'Y_03_03'), - ('SEO25HG10', 25, '병동', 'Y_03_04'), - ('SEO25HG10', 25, '수술실', 'Y_03_05'), - ('SEO25HG10', 25, '응급실', 'Y_03_06'), - ('SEO25HG10', 25, '검사실', 'Y_03_07'), - ('SEO25HG10', 25, '검사실', 'Y_03_08'); + ('SEO25NE01', 1, 'MRI실', 'A_01_01'), + ('SEO25NE01', 1, '진료실', 'A_01_02'), + ('SEO25NE01', 1, '수술실', 'A_01_03'), + ('SEO25NE01', 1, '재활센터', 'A_02_01'), + ('SEO25NE01', 1, '상담실', 'A_02_02'), + ('SEO25NE01', 1, 'CT실', 'A_02_03'), + ('SEO25NE01', 1, '영상의학센터', 'A_03_01'), + ('SEO25NE01', 1, 'MRI실', 'A_03_02'), + ('SEO25NE01', 1, '재활센터', 'A_03_03'), + ('SEO25NE01', 2, '대기실', 'B_01_01'), + ('SEO25NE01', 2, '상담실', 'B_01_02'), + ('SEO25NE01', 2, '영상의학센터', 'B_01_03'), + ('SEO25NE01', 2, '중환자실', 'B_02_01'), + ('SEO25NE01', 2, 'MRI실', 'B_02_02'), + ('SEO25NE01', 2, 'CT실', 'B_02_03'), + ('SEO25NE01', 2, '응급실', 'B_03_01'), + ('SEO25NE01', 2, '영상의학센터', 'B_03_02'), + ('SEO25NE01', 2, '대기실', 'B_03_03'), + ('SEO25NE01', 3, '검사실', 'C_01_01'), + ('SEO25NE01', 3, '중환자실', 'C_01_02'), + ('SEO25NE01', 3, '입원실', 'C_01_03'), + ('SEO25NE01', 3, '대기실', 'C_02_01'), + ('SEO25NE01', 3, 'X-ray실', 'C_02_02'), + ('SEO25NE01', 3, 'MRI실', 'C_02_03'), + ('SEO25NE01', 3, '초음파실', 'C_03_01'), + ('SEO25NE01', 3, '입원실', 'C_03_02'), + ('SEO25NE01', 3, '중환자실', 'C_03_03'), + ('SEO25W102', 4, '영상의학센터', 'D_01_01'), + ('SEO25W102', 4, '대기실', 'D_01_02'), + ('SEO25W102', 4, '영상의학센터', 'D_01_03'), + ('SEO25W102', 4, 'CT실', 'D_02_01'), + ('SEO25W102', 4, 'X-ray실', 'D_02_02'), + ('SEO25W102', 4, '중환자실', 'D_02_03'), + ('SEO25W102', 4, '영상의학센터', 'D_03_01'), + ('SEO25W102', 4, '입원실', 'D_03_02'), + ('SEO25W102', 4, '응급실', 'D_03_03'), + ('SEO25W102', 5, '영상의학센터', 'E_01_01'), + ('SEO25W102', 5, 'MRI실', 'E_01_02'), + ('SEO25W102', 5, '입원실', 'E_01_03'), + ('SEO25W102', 5, '수술실', 'E_02_01'), + ('SEO25W102', 5, '재활센터', 'E_02_02'), + ('SEO25W102', 5, '검사실', 'E_02_03'), + ('SEO25W102', 5, '입원실', 'E_03_01'), + ('SEO25W102', 5, '재활센터', 'E_03_02'), + ('SEO25W102', 5, '입원실', 'E_03_03'), + ('SEO25W102', 6, '영상의학센터', 'F_01_01'), + ('SEO25W102', 6, '영상의학센터', 'F_01_02'), + ('SEO25W102', 6, '응급실', 'F_01_03'), + ('SEO25W102', 6, '내시경실', 'F_02_01'), + ('SEO25W102', 6, '검사실', 'F_02_02'), + ('SEO25W102', 6, '입원실', 'F_02_03'), + ('SEO25W102', 6, '초음파실', 'F_03_01'), + ('SEO25W102', 6, '수술실', 'F_03_02'), + ('SEO25W102', 6, '진료실', 'F_03_03'), + ('SEO25ZG03', 7, '재활센터', 'G_01_01'), + ('SEO25ZG03', 7, '검사실', 'G_01_02'), + ('SEO25ZG03', 7, '초음파실', 'G_01_03'), + ('SEO25ZG03', 7, '진료실', 'G_02_01'), + ('SEO25ZG03', 7, '수술실', 'G_02_02'), + ('SEO25ZG03', 7, '초음파실', 'G_02_03'), + ('SEO25ZG03', 7, '채혈실', 'G_03_01'), + ('SEO25ZG03', 7, '수술실', 'G_03_02'), + ('SEO25ZG03', 7, 'CT실', 'G_03_03'), + ('SEO25ZG03', 8, '대기실', 'H_01_01'), + ('SEO25ZG03', 8, '영상의학센터', 'H_01_02'), + ('SEO25ZG03', 8, '초음파실', 'H_01_03'), + ('SEO25ZG03', 8, '초음파실', 'H_02_01'), + ('SEO25ZG03', 8, '수술실', 'H_02_02'), + ('SEO25ZG03', 8, 'CT실', 'H_02_03'), + ('SEO25ZG03', 8, '검사실', 'H_03_01'), + ('SEO25ZG03', 8, 'CT실', 'H_03_02'), + ('SEO25ZG03', 8, 'CT실', 'H_03_03'), + ('SEO25ZG03', 9, '채혈실', 'I_01_01'), + ('SEO25ZG03', 9, '초음파실', 'I_01_02'), + ('SEO25ZG03', 9, '상담실', 'I_01_03'), + ('SEO25ZG03', 9, '초음파실', 'I_02_01'), + ('SEO25ZG03', 9, '초음파실', 'I_02_02'), + ('SEO25ZG03', 9, 'MRI실', 'I_02_03'), + ('SEO25ZG03', 9, '재활센터', 'I_03_01'), + ('SEO25ZG03', 9, '내시경실', 'I_03_02'), + ('SEO25ZG03', 9, '영상의학센터', 'I_03_03'), + ('SEO25NY04', 10, '영상의학센터', 'J_01_01'), + ('SEO25NY04', 10, '영상의학센터', 'J_01_02'), + ('SEO25NY04', 10, '대기실', 'J_01_03'), + ('SEO25NY04', 10, '영상의학센터', 'J_02_01'), + ('SEO25NY04', 10, '내시경실', 'J_02_02'), + ('SEO25NY04', 10, '채혈실', 'J_02_03'), + ('SEO25NY04', 10, '입원실', 'J_03_01'), + ('SEO25NY04', 10, '내시경실', 'J_03_02'), + ('SEO25NY04', 10, '입원실', 'J_03_03'), + ('SEO25NY04', 11, '초음파실', 'K_01_01'), + ('SEO25NY04', 11, '초음파실', 'K_01_02'), + ('SEO25NY04', 11, 'X-ray실', 'K_01_03'), + ('SEO25NY04', 11, '입원실', 'K_02_01'), + ('SEO25NY04', 11, 'MRI실', 'K_02_02'), + ('SEO25NY04', 11, '내시경실', 'K_02_03'), + ('SEO25NY04', 11, '영상의학센터', 'K_03_01'), + ('SEO25NY04', 11, '재활센터', 'K_03_02'), + ('SEO25NY04', 11, '영상의학센터', 'K_03_03'), + ('SEO259W05', 12, '입원실', 'L_01_01'), + ('SEO259W05', 12, '초음파실', 'L_01_02'), + ('SEO259W05', 12, '입원실', 'L_01_03'), + ('SEO259W05', 12, 'MRI실', 'L_02_01'), + ('SEO259W05', 12, '진료실', 'L_02_02'), + ('SEO259W05', 12, '입원실', 'L_02_03'), + ('SEO259W05', 12, 'X-ray실', 'L_03_01'), + ('SEO259W05', 12, '영상의학센터', 'L_03_02'), + ('SEO259W05', 12, '대기실', 'L_03_03'), + ('SEO259W05', 13, 'MRI실', 'M_01_01'), + ('SEO259W05', 13, '중환자실', 'M_01_02'), + ('SEO259W05', 13, '입원실', 'M_01_03'), + ('SEO259W05', 13, '진료실', 'M_02_01'), + ('SEO259W05', 13, '진료실', 'M_02_02'), + ('SEO259W05', 13, '수술실', 'M_02_03'), + ('SEO259W05', 13, '초음파실', 'M_03_01'), + ('SEO259W05', 13, 'CT실', 'M_03_02'), + ('SEO259W05', 13, '내시경실', 'M_03_03'), + ('SEO259W05', 14, '수술실', 'N_01_01'), + ('SEO259W05', 14, '초음파실', 'N_01_02'), + ('SEO259W05', 14, 'MRI실', 'N_01_03'), + ('SEO259W05', 14, '응급실', 'N_02_01'), + ('SEO259W05', 14, '초음파실', 'N_02_02'), + ('SEO259W05', 14, '상담실', 'N_02_03'), + ('SEO259W05', 14, '재활센터', 'N_03_01'), + ('SEO259W05', 14, 'MRI실', 'N_03_02'), + ('SEO259W05', 14, '상담실', 'N_03_03'), + ('SEO25KG06', 15, 'X-ray실', 'O_01_01'), + ('SEO25KG06', 15, '대기실', 'O_01_02'), + ('SEO25KG06', 15, '중환자실', 'O_01_03'), + ('SEO25KG06', 15, '영상의학센터', 'O_02_01'), + ('SEO25KG06', 15, '채혈실', 'O_02_02'), + ('SEO25KG06', 15, '상담실', 'O_02_03'), + ('SEO25KG06', 15, '영상의학센터', 'O_03_01'), + ('SEO25KG06', 15, '대기실', 'O_03_02'), + ('SEO25KG06', 15, '진료실', 'O_03_03'), + ('SEO25KG06', 16, '대기실', 'P_01_01'), + ('SEO25KG06', 16, '대기실', 'P_01_02'), + ('SEO25KG06', 16, '초음파실', 'P_01_03'), + ('SEO25KG06', 16, '응급실', 'P_02_01'), + ('SEO25KG06', 16, '재활센터', 'P_02_02'), + ('SEO25KG06', 16, '수술실', 'P_02_03'), + ('SEO25KG06', 16, '중환자실', 'P_03_01'), + ('SEO25KG06', 16, '영상의학센터', 'P_03_02'), + ('SEO25KG06', 16, '초음파실', 'P_03_03'), + ('SEO25D107', 17, 'X-ray실', 'Q_01_01'), + ('SEO25D107', 17, '채혈실', 'Q_01_02'), + ('SEO25D107', 17, '재활센터', 'Q_01_03'), + ('SEO25D107', 17, '수술실', 'Q_02_01'), + ('SEO25D107', 17, '검사실', 'Q_02_02'), + ('SEO25D107', 17, '대기실', 'Q_02_03'), + ('SEO25D107', 17, '검사실', 'Q_03_01'), + ('SEO25D107', 17, '중환자실', 'Q_03_02'), + ('SEO25D107', 17, '중환자실', 'Q_03_03'), + ('SEO25D107', 18, '대기실', 'R_01_01'), + ('SEO25D107', 18, '입원실', 'R_01_02'), + ('SEO25D107', 18, '상담실', 'R_01_03'), + ('SEO25D107', 18, '영상의학센터', 'R_02_01'), + ('SEO25D107', 18, '응급실', 'R_02_02'), + ('SEO25D107', 18, '재활센터', 'R_02_03'), + ('SEO25D107', 18, 'MRI실', 'R_03_01'), + ('SEO25D107', 18, '검사실', 'R_03_02'), + ('SEO25D107', 18, '수술실', 'R_03_03'), + ('SEO25JM08', 19, '수술실', 'S_01_01'), + ('SEO25JM08', 19, '수술실', 'S_01_02'), + ('SEO25JM08', 19, 'X-ray실', 'S_01_03'), + ('SEO25JM08', 19, '대기실', 'S_02_01'), + ('SEO25JM08', 19, '내시경실', 'S_02_02'), + ('SEO25JM08', 19, '초음파실', 'S_02_03'), + ('SEO25JM08', 19, '초음파실', 'S_03_01'), + ('SEO25JM08', 19, '중환자실', 'S_03_02'), + ('SEO25JM08', 19, '초음파실', 'S_03_03'), + ('SEO25JM08', 20, '상담실', 'T_01_01'), + ('SEO25JM08', 20, '상담실', 'T_01_02'), + ('SEO25JM08', 20, 'X-ray실', 'T_01_03'), + ('SEO25JM08', 20, '입원실', 'T_02_01'), + ('SEO25JM08', 20, '응급실', 'T_02_02'), + ('SEO25JM08', 20, '초음파실', 'T_02_03'), + ('SEO25JM08', 20, '중환자실', 'T_03_01'), + ('SEO25JM08', 20, '채혈실', 'T_03_02'), + ('SEO25JM08', 20, '검사실', 'T_03_03'), + ('SEO25LH09', 21, '상담실', 'U_01_01'), + ('SEO25LH09', 21, '내시경실', 'U_01_02'), + ('SEO25LH09', 21, '채혈실', 'U_01_03'), + ('SEO25LH09', 21, '중환자실', 'U_02_01'), + ('SEO25LH09', 21, '채혈실', 'U_02_02'), + ('SEO25LH09', 21, '내시경실', 'U_02_03'), + ('SEO25LH09', 21, '재활센터', 'U_03_01'), + ('SEO25LH09', 21, '채혈실', 'U_03_02'), + ('SEO25LH09', 21, '대기실', 'U_03_03'), + ('SEO25LH09', 22, '수술실', 'V_01_01'), + ('SEO25LH09', 22, '응급실', 'V_01_02'), + ('SEO25LH09', 22, '대기실', 'V_01_03'), + ('SEO25LH09', 22, '내시경실', 'V_02_01'), + ('SEO25LH09', 22, '검사실', 'V_02_02'), + ('SEO25LH09', 22, '검사실', 'V_02_03'), + ('SEO25LH09', 22, '상담실', 'V_03_01'), + ('SEO25LH09', 22, '중환자실', 'V_03_02'), + ('SEO25LH09', 22, 'MRI실', 'V_03_03'), + ('SEO25LH09', 23, '진료실', 'W_01_01'), + ('SEO25LH09', 23, '진료실', 'W_01_02'), + ('SEO25LH09', 23, '중환자실', 'W_01_03'), + ('SEO25LH09', 23, '입원실', 'W_02_01'), + ('SEO25LH09', 23, '응급실', 'W_02_02'), + ('SEO25LH09', 23, '검사실', 'W_02_03'), + ('SEO25LH09', 23, '상담실', 'W_03_01'), + ('SEO25LH09', 23, 'MRI실', 'W_03_02'), + ('SEO25LH09', 23, '검사실', 'W_03_03'), + ('SEO25HG10', 24, 'CT실', 'X_01_01'), + ('SEO25HG10', 24, '검사실', 'X_01_02'), + ('SEO25HG10', 24, '채혈실', 'X_01_03'), + ('SEO25HG10', 24, '중환자실', 'X_02_01'), + ('SEO25HG10', 24, '대기실', 'X_02_02'), + ('SEO25HG10', 24, '재활센터', 'X_02_03'), + ('SEO25HG10', 24, '재활센터', 'X_03_01'), + ('SEO25HG10', 24, '수술실', 'X_03_02'), + ('SEO25HG10', 24, '입원실', 'X_03_03'), + ('SEO25HG10', 25, '중환자실', 'Y_01_01'), + ('SEO25HG10', 25, '재활센터', 'Y_01_02'), + ('SEO25HG10', 25, '입원실', 'Y_01_03'), + ('SEO25HG10', 25, '내시경실', 'Y_02_01'), + ('SEO25HG10', 25, '재활센터', 'Y_02_02'), + ('SEO25HG10', 25, '내시경실', 'Y_02_03'), + ('SEO25HG10', 25, '영상의학센터', 'Y_03_01'), + ('SEO25HG10', 25, '영상의학센터', 'Y_03_02'), + ('SEO25HG10', 25, '영상의학센터', 'Y_03_03'); -- ========================== -- HOSPITAL_POLICY 테이블 더미 데이터