From 40ed08d354dad1ffb602c0d37408155c3846b1fd Mon Sep 17 00:00:00 2001 From: JSPark <48265129+pknujsp@users.noreply.github.com> Date: Wed, 26 Jul 2023 16:37:58 +0900 Subject: [PATCH 01/13] =?UTF-8?q?#193=20DUR=20=EC=84=B1=EB=B6=84/=ED=92=88?= =?UTF-8?q?=EB=AA=A9=20=EC=A0=95=EB=B3=B4=20=EC=A1=B0=ED=9A=8C=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EC=9D=B8=ED=84=B0=ED=8E=98=EC=9D=B4=EC=8A=A4=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../android/mediproject/core/common/values.kt | 3 + .../core/model/DataGoKrBaseResponse.kt | 2 +- .../core/network/ExampleInstrumentedTest.kt | 13 +- .../ElderlyCautionDataSourceImpl.kt | 2 +- .../MedicineApprovalDataSourceImpl.kt | 31 +-- .../core/network/module/DataGoKrNetwork.kt | 152 +------------ .../module/datagokr/DataGoKrNetworkApi.kt | 110 ++++++++++ .../module/datagokr/DurIngrInfoNetworkApi.kt | 139 ++++++++++++ .../datagokr/DurProductInfoNetworkApi.kt | 203 ++++++++++++++++++ .../core/network/ExampleUnitTest.kt | 7 +- 10 files changed, 485 insertions(+), 177 deletions(-) create mode 100644 core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DataGoKrNetworkApi.kt create mode 100644 core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurIngrInfoNetworkApi.kt create mode 100644 core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurProductInfoNetworkApi.kt diff --git a/core/common/src/main/java/com/android/mediproject/core/common/values.kt b/core/common/src/main/java/com/android/mediproject/core/common/values.kt index e2bee6630..ad3ff7468 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/values.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/values.kt @@ -2,4 +2,7 @@ package com.android.mediproject.core.common const val DATA_GO_KR_PAGE_SIZE = 15 +const val DATA_GO_KR_DEFAULT_ROW_SIZE = 15 +const val DATA_GO_KR_DEFAULT_PAGE_NO = 1 const val AWS_LOAD_PAGE_SIZE = 100 +const val JSON = "json" diff --git a/core/model/src/main/java/com/android/mediproject/core/model/DataGoKrBaseResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/DataGoKrBaseResponse.kt index 6fd0f088a..cad730760 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/DataGoKrBaseResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/DataGoKrBaseResponse.kt @@ -16,6 +16,6 @@ abstract class DataGoKrBaseResponse { } inline fun T.toResult(): Result = header?.run { - if (resultCode == "00") Result.success(this@toResult as T) + if (resultCode == "00") Result.success(this@toResult) else Result.failure(Throwable(resultMsg)) } ?: Result.failure(Throwable("Response Failed")) diff --git a/core/network/src/androidTest/java/com/android/mediproject/core/network/ExampleInstrumentedTest.kt b/core/network/src/androidTest/java/com/android/mediproject/core/network/ExampleInstrumentedTest.kt index ab4ecdb4e..ebf8deb02 100644 --- a/core/network/src/androidTest/java/com/android/mediproject/core/network/ExampleInstrumentedTest.kt +++ b/core/network/src/androidTest/java/com/android/mediproject/core/network/ExampleInstrumentedTest.kt @@ -1,13 +1,11 @@ package com.android.mediproject.core.network -import androidx.test.platform.app.InstrumentationRegistry import androidx.test.ext.junit.runners.AndroidJUnit4 - +import androidx.test.platform.app.InstrumentationRegistry +import org.junit.Assert.* import org.junit.Test import org.junit.runner.RunWith -import org.junit.Assert.* - /** * Instrumented test, which will execute on an Android device. * @@ -21,4 +19,9 @@ class ExampleInstrumentedTest { val appContext = InstrumentationRegistry.getInstrumentation().targetContext assertEquals("com.android.mediproject.core.network.test", appContext.packageName) } -} \ No newline at end of file + + @Test + fun `공공데이터 포털 XML값 파싱 테스트`() { + println(1) + } +} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/elderlycaution/ElderlyCautionDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/elderlycaution/ElderlyCautionDataSourceImpl.kt index 01be711f4..58a538fc4 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/elderlycaution/ElderlyCautionDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/elderlycaution/ElderlyCautionDataSourceImpl.kt @@ -10,7 +10,7 @@ class ElderlyCautionDataSourceImpl @Inject constructor(private val dataGoKrNetwo override suspend fun getElderlyCaution(itemName: String?, itemSeq: String?): Result = - dataGoKrNetworkApi.getElderlyCaution(itemName = itemName, itemSeq = itemSeq).onResponse().fold( + dataGoKrNetworkApi.getElderlyCaution(itemName = itemName, _itemSeq = itemSeq).onResponse().fold( onSuccess = { response -> response.toResult() }, diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/medicineapproval/MedicineApprovalDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/medicineapproval/MedicineApprovalDataSourceImpl.kt index 83ec7ae65..59c76bcb2 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/medicineapproval/MedicineApprovalDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/medicineapproval/MedicineApprovalDataSourceImpl.kt @@ -7,6 +7,7 @@ import com.android.mediproject.core.model.medicine.medicinedetailinfo.cache.Medi import com.android.mediproject.core.model.toResult import com.android.mediproject.core.network.datasource.image.GoogleSearchDataSource import com.android.mediproject.core.network.module.DataGoKrNetworkApi +import com.android.mediproject.core.network.module.datagokr.DataGoKrNetworkApi import com.android.mediproject.core.network.module.safetyEncode import com.android.mediproject.core.network.onResponse import com.android.mediproject.core.network.onStringResponse @@ -32,21 +33,21 @@ class MedicineApprovalDataSourceImpl @Inject constructor( itemName = itemName?.safetyEncode(), entpName = entpName?.safetyEncode(), pageNo = pageNo, medicationType = medicationType, ).onResponse().fold( - onSuccess = { response -> - response.toResult().fold( - onSuccess = { - loadMedicineImageUrl(it) - Result.success(response) - }, - onFailure = { - Result.failure(it) - }, - ) - }, - onFailure = { - Result.failure(it) - }, - ) + onSuccess = { response -> + response.toResult().fold( + onSuccess = { + loadMedicineImageUrl(it) + Result.success(response) + }, + onFailure = { + Result.failure(it) + }, + ) + }, + onFailure = { + Result.failure(it) + }, + ) override fun getMedicineDetailInfo(itemName: String): Flow> = channelFlow { dataGoKrNetworkApiWithString.getMedicineDetailInfo(itemName = itemName.safetyEncode()).let { response -> diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/DataGoKrNetwork.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/DataGoKrNetwork.kt index bb452abeb..0e32ccf62 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/module/DataGoKrNetwork.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/DataGoKrNetwork.kt @@ -1,17 +1,8 @@ package com.android.mediproject.core.network.module -import com.android.mediproject.core.common.BuildConfig -import com.android.mediproject.core.common.DATA_GO_KR_PAGE_SIZE import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers import com.android.mediproject.core.database.cache.manager.MedicineDataCacheManager -import com.android.mediproject.core.model.medicine.medicineapproval.MedicineApprovalListResponse -import com.android.mediproject.core.model.remote.adminaction.AdminActionListResponse -import com.android.mediproject.core.model.remote.dur.DurResponse -import com.android.mediproject.core.model.remote.elderlycaution.ElderlyCautionResponse -import com.android.mediproject.core.model.remote.granule.GranuleIdentificationInfoResponse -import com.android.mediproject.core.model.remote.recall.DetailRecallSuspensionResponse -import com.android.mediproject.core.model.remote.recall.RecallSuspensionListResponse import com.android.mediproject.core.network.datasource.dur.DurDataSource import com.android.mediproject.core.network.datasource.dur.DurDataSourceImpl import com.android.mediproject.core.network.datasource.elderlycaution.ElderlyCautionDataSource @@ -25,6 +16,7 @@ import com.android.mediproject.core.network.datasource.penalties.adminaction.Adm import com.android.mediproject.core.network.datasource.penalties.adminaction.AdminActionDataSourceImpl import com.android.mediproject.core.network.datasource.penalties.recallsuspension.RecallSuspensionDataSource import com.android.mediproject.core.network.datasource.penalties.recallsuspension.RecallSuspensionDataSourceImpl +import com.android.mediproject.core.network.module.datagokr.DataGoKrNetworkApi import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory import dagger.Module import dagger.Provides @@ -34,11 +26,8 @@ import kotlinx.coroutines.CoroutineDispatcher import kotlinx.serialization.json.Json import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient -import retrofit2.Response import retrofit2.Retrofit import retrofit2.converter.scalars.ScalarsConverterFactory -import retrofit2.http.GET -import retrofit2.http.Query import javax.inject.Named import javax.inject.Singleton @@ -108,142 +97,3 @@ object DataGoKrNetwork { fun providesDurDataSource(@Named("dataGoKrNetworkApiWithJsonResponse") dataGoKrNetworkApi: DataGoKrNetworkApi): DurDataSource = DurDataSourceImpl(dataGoKrNetworkApi) } - -interface DataGoKrNetworkApi { - - @GET(value = "DrugPrdtPrmsnInfoService04/getDrugPrdtPrmsnInq04") - suspend fun getApprovalList( - @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("item_name", encoded = false) itemName: String?, - @Query("entp_name", encoded = false) entpName: String?, - @Query("spclty_pblc", encoded = true) medicationType: String?, - @Query("pageNo") pageNo: Int, - @Query("type") type: String = JSON, - @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, - ): Response - - - @GET(value = "DrugPrdtPrmsnInfoService04/getDrugPrdtPrmsnDtlInq03") - suspend fun getMedicineDetailInfo( - @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("item_name", encoded = false) itemName: String = "", - @Query("item_seq", encoded = true) itemSeq: String = "", - @Query("pageNo") pageNo: Int = 1, - @Query("type") type: String = JSON, - @Query("numOfRows") numOfRows: Int = 1, - ): Response - - /** - * 의약품 회수·판매중지 목록 조회 - */ - @GET(value = "MdcinRtrvlSleStpgeInfoService03/getMdcinRtrvlSleStpgelList02") - suspend fun getRecallSuspensionList( - @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int, - @Query("type") type: String = JSON, - @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, - ): Response - - /** - * 의약품 회수·판매중지 정보 상세 조회 - * - * @param company 제조사 - * @param product 제품명 - */ - @GET(value = "MdcinRtrvlSleStpgeInfoService03/getMdcinRtrvlSleStpgeItem02") - suspend fun getDetailRecallSuspensionInfo( - @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int = 1, - @Query("type") type: String = JSON, - @Query("Entrps", encoded = true) company: String?, - @Query("Prduct", encoded = true) product: String?, - @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, - ): Response - - /** - * 행정 처분 목록조회 - */ - @GET(value = "MdcinExaathrService04/getMdcinExaathrList04") - suspend fun getAdminActionList( - @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int, - @Query("type") type: String = JSON, - @Query("order", encoded = true) order: String = "Y", - @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, - ): Response - - /** - * 의약품 낱알 식별 정보 조회 - * - * @param itemName 의약품명 - * @param entpName 업체명 - * @param itemSeq 품목기준코드 - */ - @GET(value = "MdcinGrnIdntfcInfoService01/getMdcinGrnIdntfcInfoList01") - suspend fun getGranuleIdentificationInfo( - @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: String = "1", - @Query("item_name") itemName: String?, - @Query("entp_name") entpName: String?, - @Query("item_seq") itemSeq: String?, - @Query("type") type: String = JSON, - @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, - ): Response - - - /** - * DUR 병용금기 목록 조회 - * - * @param itemName 의약품명 - * @param itemSeq 품목기준코드 - * - */ - @GET(value = "DURIrdntInfoService02/getUsjntTabooInfoList01") - suspend fun getCombinationContraindications( - @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: String = "1", - @Query("typeName") typeName: String = "병용금기", - @Query("itemName") itemName: String?, - @Query("itemSeq") itemSeq: String?, - @Query("type") type: String = JSON, - @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, - ): Response - - - /** - * DUR 노인 주의 정보 조회 - * - * @param itemName 의약품명 - * @param itemSeq 품목기준코드 - * - */ - @GET(value = "DURPrdlstInfoService02/getOdsnAtentInfoList2") - suspend fun getElderlyCaution( - @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: String = "1", - @Query("typeName") typeName: String = "노인주의", - @Query("itemName") itemName: String?, - @Query("itemSeq") itemSeq: String?, - @Query("type") type: String = JSON, - @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, - ): Response - - /** - * DUR 정보 조회 - * - * @param itemName 의약품명 - * @param itemSeq 품목기준코드 - * - */ - @GET(value = "DURPrdlstInfoService02/getDurPrdlstInfoList2") - suspend fun getDur( - @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: String = "1", - @Query("itemName") itemName: String?, - @Query("itemSeq") itemSeq: String?, - @Query("type") type: String = JSON, - @Query("numOfRows") numOfRows: Int = 1, - ): Response -} - -private const val JSON = "json" diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DataGoKrNetworkApi.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DataGoKrNetworkApi.kt new file mode 100644 index 000000000..effde93d6 --- /dev/null +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DataGoKrNetworkApi.kt @@ -0,0 +1,110 @@ +package com.android.mediproject.core.network.module.datagokr + +import com.android.mediproject.core.common.BuildConfig +import com.android.mediproject.core.common.DATA_GO_KR_DEFAULT_PAGE_NO +import com.android.mediproject.core.common.DATA_GO_KR_PAGE_SIZE +import com.android.mediproject.core.common.JSON +import com.android.mediproject.core.model.medicine.medicineapproval.MedicineApprovalListResponse +import com.android.mediproject.core.model.remote.adminaction.AdminActionListResponse +import com.android.mediproject.core.model.remote.granule.GranuleIdentificationInfoResponse +import com.android.mediproject.core.model.remote.recall.DetailRecallSuspensionResponse +import com.android.mediproject.core.model.remote.recall.RecallSuspensionListResponse +import retrofit2.Response +import retrofit2.http.GET +import retrofit2.http.Query + + +interface DataGoKrNetworkApi { + + /** + * 의약품 허가 목록 조회 + * + * @param itemName 의약품명 + * @param entpName 업체명 + * @param medicationType 의약품 분류(전문의약품, 일반의약품) + */ + @GET(value = "DrugPrdtPrmsnInfoService04/getDrugPrdtPrmsnInq04") + suspend fun getApprovalList( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("item_name", encoded = false) itemName: String?, + @Query("entp_name", encoded = false) entpName: String?, + @Query("spclty_pblc", encoded = true) medicationType: String?, + @Query("pageNo") pageNo: Int, + @Query("type") type: String = JSON, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, + ): Response + + + /** + * 의약품 허가 정보 상세 조회 + * + * @param itemName 의약품명 + * @param itemSeq 품목기준코드 + */ + @GET(value = "DrugPrdtPrmsnInfoService04/getDrugPrdtPrmsnDtlInq03") + suspend fun getMedicineDetailInfo( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("item_name", encoded = false) itemName: String = "", + @Query("item_seq", encoded = true) itemSeq: String = "", + @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("type") type: String = JSON, + @Query("numOfRows") numOfRows: Int = 1, + ): Response + + /** + * 의약품 회수·판매중지 목록 조회 + */ + @GET(value = "MdcinRtrvlSleStpgeInfoService03/getMdcinRtrvlSleStpgelList02") + suspend fun getRecallSuspensionList( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("pageNo") pageNo: Int, + @Query("type") type: String = JSON, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, + ): Response + + /** + * 의약품 회수·판매중지 정보 상세 조회 + * + * @param company 제조사 + * @param product 제품명 + */ + @GET(value = "MdcinRtrvlSleStpgeInfoService03/getMdcinRtrvlSleStpgeItem02") + suspend fun getDetailRecallSuspensionInfo( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("type") type: String = JSON, + @Query("Entrps", encoded = true) company: String?, + @Query("Prduct", encoded = true) product: String?, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, + ): Response + + /** + * 행정 처분 목록조회 + */ + @GET(value = "MdcinExaathrService04/getMdcinExaathrList04") + suspend fun getAdminActionList( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("pageNo") pageNo: Int, + @Query("type") type: String = JSON, + @Query("order", encoded = true) order: String = "Y", + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, + ): Response + + /** + * 의약품 낱알 식별 정보 조회 + * + * @param itemName 의약품명 + * @param entpName 업체명 + * @param itemSeq 품목기준코드 + */ + @GET(value = "MdcinGrnIdntfcInfoService01/getMdcinGrnIdntfcInfoList01") + suspend fun getGranuleIdentificationInfo( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("item_name") itemName: String?, + @Query("entp_name") entpName: String?, + @Query("item_seq") itemSeq: String?, + @Query("type") type: String = JSON, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, + ): Response +} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurIngrInfoNetworkApi.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurIngrInfoNetworkApi.kt new file mode 100644 index 000000000..e171c25d6 --- /dev/null +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurIngrInfoNetworkApi.kt @@ -0,0 +1,139 @@ +package com.android.mediproject.core.network.module.datagokr + +import com.android.mediproject.core.common.BuildConfig +import com.android.mediproject.core.common.DATA_GO_KR_DEFAULT_PAGE_NO +import com.android.mediproject.core.common.DATA_GO_KR_PAGE_SIZE +import com.android.mediproject.core.common.JSON +import com.android.mediproject.core.model.remote.granule.GranuleIdentificationInfoResponse +import retrofit2.Response +import retrofit2.http.GET +import retrofit2.http.Query + +/** + * 식품의약품안전처_의약품안전사용서비스(DUR)성분정보 + * + * - 식품의약품안전처에서 관리하는 의약품(허가,행정,성분 등)의 관련 정보 조회 + */ +interface DurIngrInfoNetworkApi { + + /** + * DUR 병용금기 목록 조회 + * + * @param ingrKorName DUR성분명(ex : 이트라코나졸) + * @param ingrCode DUR성분(ex : D000762) + */ + @GET(value = "DURIrdntInfoService02/getUsjntTabooInfoList01") + suspend fun getCombinationTabooInfo( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("typeName") typeName: String = "병용금기", + @Query("ingrKorName") ingrKorName: String?, + @Query("ingrCode") ingrCode: String?, + @Query("type") type: String = JSON, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, + ): Response + + + /** + * 특정연령대금기 목록 조회 + * + * @param ingrName DUR성분명(ex : 아카보즈) + * @param ingrCode DUR성분(ex : D000149) + */ + @GET(value = "DURIrdntInfoService02/getSpcifyAgrdeTabooInfoList01") + suspend fun getSpecialtyAgeGroupTabooInfo( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("typeName") typeName: String = "특정연령대금기", + @Query("ingrName") ingrName: String?, + @Query("ingrCode") ingrCode: String?, + @Query("type") type: String = JSON, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, + ): Response + + /** + * 임부금기 목록 조회 + * + * @param ingrName DUR성분명(ex : 아카보즈) + * @param ingrCode DUR성분(ex : D000149) + */ + @GET(value = "DURIrdntInfoService02/getPwnmTabooInfoList01") + suspend fun getPregnantWomanTabooInfo( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("typeName") typeName: String = "임부금기", + @Query("ingrName") ingrName: String?, + @Query("ingrCode") ingrCode: String?, + @Query("type") type: String = JSON, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, + ): Response + + /** + * 용량주의 정보 조회 + * + * @param ingrName DUR성분명(ex : 트리아졸람) + * @param ingrCode DUR성분(ex : D000592) + */ + @GET(value = "DURIrdntInfoService02/getCpctyAtentInfoList01") + suspend fun getCapacityAttentionInfo( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("typeName") typeName: String = "용량주의", + @Query("ingrName") ingrName: String?, + @Query("ingrCode") ingrCode: String?, + @Query("type") type: String = JSON, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, + ) + + /** + * 투여기간 정보 조회 + * + * @param ingrName DUR성분명(ex : 트리아졸람) + * @param ingrCode DUR성분(ex : D000592) + */ + @GET(value = "DURIrdntInfoService02/getMdctnPdAtentInfoList01") + suspend fun getDosingCautionInfo( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("typeName") typeName: String = "투여기간주의", + @Query("ingrName") ingrName: String?, + @Query("ingrCode") ingrCode: String?, + @Query("type") type: String = JSON, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, + ) + + + /** + * 노인주의 정보 조회 + * + * @param ingrName DUR성분명(ex : 클로르디아제폭시드) + * @param ingrCode DUR성분(ex : D000056) + */ + @GET(value = "DURIrdntInfoService02/getOdsnAtentInfoList01") + suspend fun getElderlyCaution( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("typeName") typeName: String = "노인주의", + @Query("ingrName") ingrName: String?, + @Query("ingrCode") ingrCode: String?, + @Query("type") type: String = JSON, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, + ) + + /** + * 효능군중복주의 정보 조회 + * + * @param ingrName DUR성분명(ex : 아세클로페낙) + * @param ingrCode DUR성분(ex : D000739) + */ + @GET(value = "DURIrdntInfoService02/getEfcyDplctInfoList01") + suspend fun getEfficacyGroupDuplicationInfo( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("typeName") typeName: String = "효능군중복", + @Query("ingrName") ingrName: String?, + @Query("ingrCode") ingrCode: String?, + @Query("type") type: String = JSON, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, + ) +} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurProductInfoNetworkApi.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurProductInfoNetworkApi.kt new file mode 100644 index 000000000..c80401fe2 --- /dev/null +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurProductInfoNetworkApi.kt @@ -0,0 +1,203 @@ +package com.android.mediproject.core.network.module.datagokr + +import com.android.mediproject.core.common.BuildConfig +import com.android.mediproject.core.common.DATA_GO_KR_DEFAULT_PAGE_NO +import com.android.mediproject.core.common.DATA_GO_KR_DEFAULT_ROW_SIZE +import com.android.mediproject.core.common.JSON +import com.android.mediproject.core.model.remote.dur.DurResponse +import com.android.mediproject.core.model.remote.elderlycaution.ElderlyCautionResponse +import retrofit2.Response +import retrofit2.http.GET +import retrofit2.http.Query + +/** + * 의약품 안전 사용 서비스(DUR) 품목정보 + * + * 식품의약품안전처에서 관리하는 의약품 안전사용정보 관련 조회 + * - 병용금기, 특정연령대금기, 임부금기, 용량주의, 투여기간주의, 노인주의, 효능군중복주의, 서방정분할주의, DUR품목정보 등 + */ +interface DurProductInfoNetworkApi { + + /** + * DUR 품목 정보 조회 + * + * @param itemName 의약품명 + * @param itemSeq 품목기준코드 + * + */ + @GET(value = "DURPrdlstInfoService02/getDurPrdlstInfoList2") + suspend fun getDur( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("itemName") itemName: String?, + @Query("itemSeq") itemSeq: String?, + @Query("type") type: String = JSON, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, + ): Response + + /** + * 노인 주의 정보 조회 + * + * @param itemName 의약품명 + * @param ingrCode DUR성분코드 + * @param typeName DUR유형 + * @param itemSeq 품목기준코드 + * + */ + @GET(value = "DURPrdlstInfoService02/getOdsnAtentInfoList2") + suspend fun getElderlyCaution( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("typeName") typeName: String = "노인주의", + @Query("itemName") itemName: String?, + @Query("ingrCode") ingrCode: String?, + @Query("itemSeq") itemSeq: String?, + @Query("type") type: String = JSON, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, + ): Response + + /** + * 서방정 분할 주의 정보 조회 + * + * @param itemName 의약품명 + * @param entpName 업체명 + * @param typeName DUR유형 + * @param itemSeq 품목기준코드 + */ + @GET(value = "DURPrdlstInfoService02/getSeobangjeongPartitnAtentInfoList2") + suspend fun getSustainedReleaseTableSplitAttentionInfo( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("itemName") itemName: String?, + @Query("entpName") entpName: String?, + @Query("typeName") typeName: String?, + @Query("itemSeq") itemSeq: String?, + @Query("type") type: String = JSON, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, + ) + + /** + * 효능군 중복 정보 조회 + * + * @param itemName 의약품명 + * @param ingrCode DUR성분코드 + * @param typeName DUR유형 + * @param itemSeq 품목기준코드 + */ + @GET(value = "DURPrdlstInfoService02/getEfcyDplctInfoList2") + suspend fun getEfficacyGroupDuplicationInfo( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("itemName") itemName: String?, + @Query("ingrCode") ingrCode: String?, + @Query("typeName") typeName: String?, + @Query("itemSeq") itemSeq: String?, + @Query("type") type: String = JSON, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, + ) + + /** + * 투여기간 주의 정보 조회 + * + * @param itemName 의약품명 + * @param ingrCode DUR성분코드 + * @param typeName DUR유형 + * @param itemSeq 품목기준코드 + * + */ + @GET(value = "DURPrdlstInfoService02/getMdctnPdAtentInfoList2") + suspend fun getDosingCautionInfo( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("itemName") itemName: String?, + @Query("ingrCode") ingrCode: String?, + @Query("typeName") typeName: String?, + @Query("itemSeq") itemSeq: String?, + @Query("type") type: String = JSON, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, + ) + + /** + * 용량주의 정보 조회 + * + * @param itemName 의약품명 + * @param ingrCode DUR성분코드 + * @param typeName DUR유형 + * @param itemSeq 품목기준코드 + * + */ + @GET(value = "DURPrdlstInfoService02/getCpctyAtentInfoList2") + suspend fun getCapacityAttentionInfo( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("itemName") itemName: String?, + @Query("ingrCode") ingrCode: String?, + @Query("typeName") typeName: String?, + @Query("itemSeq") itemSeq: String?, + @Query("type") type: String = JSON, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, + ) + + /** + * 임산부 금기 정보 조회 + * + * @param itemName 의약품명 + * @param ingrCode DUR성분코드 + * @param typeName DUR유형 + * @param itemSeq 품목기준코드 + * + */ + @GET(value = "DURPrdlstInfoService02/getPwnmTabooInfoList2") + suspend fun getPregnantWomanTabooInfo( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("itemName") itemName: String?, + @Query("ingrCode") ingrCode: String?, + @Query("typeName") typeName: String?, + @Query("itemSeq") itemSeq: String?, + @Query("type") type: String = JSON, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, + ) + + /** + * 특정연령대금기 정보조회 + * + * @param itemName 의약품명 + * @param ingrCode DUR성분코드 + * @param typeName DUR유형 + * @param itemSeq 품목기준코드 + * + */ + @GET(value = "DURPrdlstInfoService02/getSpcifyAgrdeTabooInfoList2") + suspend fun getSpecialtyAgeGroupTabooInfo( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("itemName") itemName: String?, + @Query("ingrCode") ingrCode: String?, + @Query("typeName") typeName: String?, + @Query("itemSeq") itemSeq: String?, + @Query("type") type: String = JSON, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, + ) + + /** + * 병용금기 정보 조회 + * + * @param itemName 의약품명 + * @param ingrCode DUR성분코드 + * @param typeName DUR유형 + * @param itemSeq 품목기준코드 + * + */ + @GET(value = "DURPrdlstInfoService02/getUsjntTabooInfoList02") + suspend fun getCombinationTabooInfo( + @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, + @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("itemName") itemName: String?, + @Query("ingrCode") ingrCode: String?, + @Query("typeName") typeName: String?, + @Query("itemSeq") itemSeq: String?, + @Query("type") type: String = JSON, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, + ) +} diff --git a/core/network/src/test/java/com/android/mediproject/core/network/ExampleUnitTest.kt b/core/network/src/test/java/com/android/mediproject/core/network/ExampleUnitTest.kt index 289ab1f9c..559ad7509 100644 --- a/core/network/src/test/java/com/android/mediproject/core/network/ExampleUnitTest.kt +++ b/core/network/src/test/java/com/android/mediproject/core/network/ExampleUnitTest.kt @@ -1,9 +1,8 @@ package com.android.mediproject.core.network +import org.junit.Assert.assertEquals import org.junit.Test -import org.junit.Assert.* - /** * Example local unit test, which will execute on the development machine (host). * @@ -11,7 +10,7 @@ import org.junit.Assert.* */ class ExampleUnitTest { @Test - fun addition_isCorrect() { + fun `하이_하인`() { assertEquals(4, 2 + 2) } -} \ No newline at end of file +} From 5ce577b54a07b629fa93c4ad42176bd0e22187e2 Mon Sep 17 00:00:00 2001 From: JSPark <48265129+pknujsp@users.noreply.github.com> Date: Wed, 26 Jul 2023 17:11:47 +0900 Subject: [PATCH 02/13] =?UTF-8?q?#193=20DUR=20=EC=84=B1=EB=B6=84=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=EC=9D=91=EB=8B=B5=20=ED=81=B4=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=EC=99=84=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DurIngrCapacityAttentionInfoResponse.kt | 67 +++++++++++++++++ .../DurIngrCombinationTabooInfoResponse.kt | 75 +++++++++++++++++++ .../DurIngrDosingCautionInfoResponse.kt | 67 +++++++++++++++++ ...ngrEfficacyGroupDuplicationInfoResponse.kt | 65 ++++++++++++++++ .../duringr/DurIngrElderlyCautionResponse.kt | 63 ++++++++++++++++ .../DurIngrPregnantWomanTabooInfoResponse.kt | 67 +++++++++++++++++ ...rIngrSpecialtyAgeGroupTabooInfoResponse.kt | 67 +++++++++++++++++ .../elderlycaution/ElderlyCautionDto.kt | 22 +++--- .../elderlycaution/ElderlyCautionResponse.kt | 48 ++++++------ 9 files changed, 506 insertions(+), 35 deletions(-) create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrCapacityAttentionInfoResponse.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrCombinationTabooInfoResponse.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrDosingCautionInfoResponse.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrEfficacyGroupDuplicationInfoResponse.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrElderlyCautionResponse.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrPregnantWomanTabooInfoResponse.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrSpecialtyAgeGroupTabooInfoResponse.kt diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrCapacityAttentionInfoResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrCapacityAttentionInfoResponse.kt new file mode 100644 index 000000000..d99a4aee8 --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrCapacityAttentionInfoResponse.kt @@ -0,0 +1,67 @@ +package com.android.mediproject.core.model.datagokr.duringr + + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class DurIngrCapacityAttentionInfoResponse( + @SerialName("body") val body: Body = Body(), + @SerialName("header") val header: Header = Header(), +) { + @Serializable + data class Body( + @SerialName("items") val items: List = listOf(), + @SerialName("numOfRows") val numOfRows: Int = 0, // 15 + @SerialName("pageNo") val pageNo: Int = 0, // 1 + @SerialName("totalCount") val totalCount: Int = 0, // 1 + ) { + @Serializable + data class Item( + @SerialName("item") val item: Item = Item(), + ) { + + /** + * @param durSeq DUR번호 + * @param typeName DUR유형 + * @param mixType 복합제구분(단일/복합) + * @param ingrCode DUR성분코드 + * @param ingrName DUR성분명 + * @param ingrEngName DUR성분 영문명 + * @param mixIngr 복합제 + * @param oriIngr 관계성분 + * @param className 약효분류 + * @param formName 제형 + * @param maxQty 1일 최대용량 + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param delYn 상태(정상/삭제) + */ + @Serializable + data class Item( + @SerialName("CLASS_NAME") val className: String = "", // [01120]최면진정제 + @SerialName("DEL_YN") val delYn: String = "", // 정상 + @SerialName("DUR_SEQ") val durSeq: String = "", // 636 + @SerialName("FORM_NAME") val formName: String = "", // 정제 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000592 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Triazolam + @SerialName("INGR_NAME") val ingrName: String = "", // 트리아졸람 + @SerialName("MAX_QTY") val maxQty: String = "", // 0.25밀리그램 + @SerialName("MIX_INGR") val mixIngr: String = "", // 복합제 + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20130703 + @SerialName("ORI_INGR") val oriIngr: String = "", // [I005603]트리아졸람/[M088380]트리아졸람 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 금기내용 + @SerialName("REMARK") val remark: String = "", // 비고 + @SerialName("TYPE_NAME") val typeName: String = "", // 용량주의 + ) + } + } + + @Serializable + data class Header( + @SerialName("resultCode") val resultCode: String = "", // 00 + @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. + ) +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrCombinationTabooInfoResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrCombinationTabooInfoResponse.kt new file mode 100644 index 000000000..e10ad6e58 --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrCombinationTabooInfoResponse.kt @@ -0,0 +1,75 @@ +package com.android.mediproject.core.model.datagokr.duringr + + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class DurIngrCombinationTabooInfoResponse( + @SerialName("body") val body: Body = Body(), + @SerialName("header") val header: Header = Header(), +) { + @Serializable + data class Body( + @SerialName("items") val items: List = listOf(), + @SerialName("numOfRows") val numOfRows: Int = 0, // 15 + @SerialName("pageNo") val pageNo: Int = 0, // 1 + @SerialName("totalCount") val totalCount: Int = 0, // 15 + ) { + @Serializable + data class Item( + @SerialName("item") val item: Item = Item(), + ) { + /** + * @param typeName DUR유형 + * @param mixType 복합제구분(단일/복합) + * @param ingrCode DUR성분코드 + * @param ingrKorName DUR성분명 + * @param ingrEngName DUR성분 영문명 + * @param className 약효분류 + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param delYn 상태(정상/삭제) + * @param mix 복합제 + * @param mixtureIngrEngName 병용금기 DUR성분 영문 + * @param mixtureIngrKorName 병용금기 DUR성분 한글 + * @param mixtureClass 병용금기 약효분류 + * @param mixtureIngrCode 병용금기 DUR성분코드 + * @param mixtureMix 병용금기 복합제 + * @param mixtureMixType 병용금기 복합제구분(단일/복합) + * @param mixtureOri 병용금기 관계성분 + * @param ori 관계성분 + */ + @Serializable + data class Item( + @SerialName("CLASS") val className: String = "", // [06290]기타의 화학요법제 + @SerialName("DEL_YN") val delYn: String = "", // 정상 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000762 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Itraconazole + @SerialName("INGR_KOR_NAME") val ingrKorName: String = "", // 이트라코나졸 + @SerialName("MIX") val mix: String = "", + @SerialName("MIXTURE_CLASS") val mixtureClass: String = "", // [02180]동맥경화용제 + @SerialName("MIXTURE_INGR_CODE") val mixtureIngrCode: String = "", // D000027 + @SerialName("MIXTURE_INGR_ENG_NAME") val mixtureIngrEngName: String = "", // Simvastatin + @SerialName("MIXTURE_INGR_KOR_NAME") val mixtureIngrKorName: String = "", // 심바스타틴 + @SerialName("MIXTURE_MIX") val mixtureMix: String = "", + @SerialName("MIXTURE_MIX_TYPE") val mixtureMixType: String = "", // 단일 + @SerialName("MIXTURE_ORI") val mixtureOri: String = "", // [M089710]심바스타틴 + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20090303 + @SerialName("ORI") + val ori: String = "", // [M083733]이트라코나졸제피과립/[M083734]이트라코나졸/[M092870]이트라코나졸고체분산체/[M201487]이트라코나졸고체분산/[M201624]제피이트라코나졸과립 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 횡문근융해증 + @SerialName("REMARK") val remark: String = "", // 75세 이상 남성 + @SerialName("TYPE_NAME") val typeName: String = "", // 병용금기 + ) + } + } + + @Serializable + data class Header( + @SerialName("resultCode") val resultCode: String = "", // 00 + @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. + ) +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrDosingCautionInfoResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrDosingCautionInfoResponse.kt new file mode 100644 index 000000000..d130448b6 --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrDosingCautionInfoResponse.kt @@ -0,0 +1,67 @@ +package com.android.mediproject.core.model.datagokr.duringr + + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class DurIngrDosingCautionInfoResponse( + @SerialName("body") val body: Body = Body(), + @SerialName("header") val header: Header = Header(), +) { + @Serializable + data class Body( + @SerialName("items") val items: List = listOf(), + @SerialName("numOfRows") val numOfRows: Int = 0, // 15 + @SerialName("pageNo") val pageNo: Int = 0, // 1 + @SerialName("totalCount") val totalCount: Int = 0, // 1 + ) { + @Serializable + data class Item( + @SerialName("item") val item: Item = Item(), + ) { + + /** + * @param durSeq DUR번호 + * @param typeName DUR유형 + * @param mixType 복합제구분(단일/복합) + * @param ingrCode DUR성분코드 + * @param ingrKorName DUR성분 명 + * @param ingrEngName DUR성분 영문명 + * @param mixIngr 복합제 + * @param oriIngr 관계성분 + * @param className 약효분류 + * @param formName 제형 + * @param maxDosageTerm 최대 투여 기간 + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param delYn 상태(정상/삭제) + */ + @Serializable + data class Item( + @SerialName("CLASS_NAME") val className: String = "", // [01120]최면진정제 + @SerialName("DEL_YN") val delYn: String = "", // 정상 + @SerialName("DUR_SEQ") val durSeq: String = "", // 459 + @SerialName("FORM_NAME") val formName: String = "", // 정제 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000592 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Triazolam + @SerialName("INGR_NAME") val ingrKorName: String = "", // 트리아졸람 + @SerialName("MAX_DOSAGE_TERM") val maxDosageTerm: String = "", // 21일 + @SerialName("MIX_INGR") val mixIngr: String = "", + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20100511 + @SerialName("ORI_INGR") val oriIngr: String = "", // [I005603]트리아졸람/[M088380]트리아졸람 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // null + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_NAME") val typeName: String = "", // 투여기간주의 + ) + } + } + + @Serializable + data class Header( + @SerialName("resultCode") val resultCode: String = "", // 00 + @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. + ) +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrEfficacyGroupDuplicationInfoResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrEfficacyGroupDuplicationInfoResponse.kt new file mode 100644 index 000000000..59cc93aed --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrEfficacyGroupDuplicationInfoResponse.kt @@ -0,0 +1,65 @@ +package com.android.mediproject.core.model.datagokr.duringr + + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class DurIngrEfficacyGroupDuplicationInfoResponse( + @SerialName("body") val body: Body = Body(), + @SerialName("header") val header: Header = Header(), +) { + @Serializable + data class Body( + @SerialName("items") val items: List = listOf(), + @SerialName("numOfRows") val numOfRows: Int = 0, // 15 + @SerialName("pageNo") val pageNo: Int = 0, // 1 + @SerialName("totalCount") val totalCount: Int = 0, // 1 + ) { + @Serializable + data class Item( + @SerialName("item") val item: Item = Item(), + ) { + + /** + * @param durSeq DUR번호 + * @param typeName DUR유형 + * @param mixType 복합제구분(단일/복합) + * @param ingrCode DUR성분코드 + * @param ingrKorName DUR성분 명 + * @param ingrEngName DUR성분 영문명 + * @param mixIngr 복합제 + * @param oriIngr 관계성분 + * @param className 약효분류 + * @param effectCode 효능군 + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param delYn 상태(정상/삭제) + */ + @Serializable + data class Item( + @SerialName("CLASS_NAME") val className: String = "", // [01140]해열.진통.소염제 + @SerialName("DEL_YN") val delYn: String = "", // 정상 + @SerialName("DUR_SEQ") val durSeq: String = "", // 2463 + @SerialName("EFFECT_CODE") val effectCode: String = "", // 해열진통소염제 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000739 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Aceclofenac + @SerialName("INGR_NAME") val ingrKorName: String = "", // 아세클로페낙 + @SerialName("MIX_INGR") val mixIngr: String = "", + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20120831 + @SerialName("ORI_INGR") val oriIngr: String = "", // [M040359]아세클로페낙 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // null + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_NAME") val typeName: String = "", // 효능군중복 + ) + } + } + + @Serializable + data class Header( + @SerialName("resultCode") val resultCode: String = "", // 00 + @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. + ) +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrElderlyCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrElderlyCautionResponse.kt new file mode 100644 index 000000000..eea6d8dae --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrElderlyCautionResponse.kt @@ -0,0 +1,63 @@ +package com.android.mediproject.core.model.datagokr.duringr + + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class DurIngrElderlyCautionResponse( + @SerialName("body") val body: Body = Body(), + @SerialName("header") val header: Header = Header(), +) { + @Serializable + data class Body( + @SerialName("items") val items: List = listOf(), + @SerialName("numOfRows") val numOfRows: Int = 0, // 15 + @SerialName("pageNo") val pageNo: Int = 0, // 1 + @SerialName("totalCount") val totalCount: Int = 0, // 2 + ) { + @Serializable + data class Item( + @SerialName("item") val item: Item = Item(), + ) { + + /** + * @param durSeq DUR번호 + * @param typeName DUR유형 + * @param mixType 복합제구분(단일/복합) + * @param ingrCode DUR성분코드 + * @param ingrKorName DUR성분 명 + * @param ingrEngName DUR성분 영문명 + * @param mixIngr 복합제 + * @param oriIngr 관계성분 + * @param formName 제형 + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param delYn 상태(정상/삭제) + */ + @Serializable + data class Item( + @SerialName("DEL_YN") val delYn: String = "", // 정상 + @SerialName("DUR_SEQ") val durSeq: String = "", // 1 + @SerialName("FORM_NAME") val formName: String = "", + @SerialName("INGR_CODE") val ingrCode: String = "", // D000056 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Chlordiazepoxide + @SerialName("INGR_NAME") val ingrKorName: String = "", // 클로르디아제폭시드 + @SerialName("MIX_INGR") val mixIngr: String = "", + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20150728 + @SerialName("ORI_INGR") val oriIngr: String = "", // [M088403]클로르디아제폭시드/[M223206]클로르디아제폭시드염산염 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 노인에서의 장기지속형 벤조다이아제핀 사용은 운동실조, 과진정 등이 나타나기 쉬움으로 소량부터 신중투여 + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_NAME") val typeName: String = "", // 노인주의 + ) + } + } + + @Serializable + data class Header( + @SerialName("resultCode") val resultCode: String = "", // 00 + @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. + ) +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrPregnantWomanTabooInfoResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrPregnantWomanTabooInfoResponse.kt new file mode 100644 index 000000000..038c101c7 --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrPregnantWomanTabooInfoResponse.kt @@ -0,0 +1,67 @@ +package com.android.mediproject.core.model.datagokr.duringr + + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class DurIngrPregnantWomanTabooInfoResponse( + @SerialName("body") val body: Body = Body(), + @SerialName("header") val header: Header = Header(), +) { + @Serializable + data class Body( + @SerialName("items") val items: List = listOf(), + @SerialName("numOfRows") val numOfRows: Int = 0, // 15 + @SerialName("pageNo") val pageNo: Int = 0, // 1 + @SerialName("totalCount") val totalCount: Int = 0, // 1 + ) { + @Serializable + data class Item( + @SerialName("item") val item: Item = Item(), + ) { + /** + * @param durSeq DUR번호 + * @param typeName DUR유형 + * @param mixType 복합제구분(단일/복합) + * @param ingrCode DUR성분코드 + * @param ingrKorName DUR성분 명 + * @param ingrEngName DUR성분 영문명 + * @param mixIngr 복합제 + * @param oriIngr 관계성분 + * @param className 약효분류 + * @param formName 제형 + * @param grade 등급 + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param delYn 상태(정상/삭제) + */ + @Serializable + data class Item( + @SerialName("CLASS_NAME") val className: String = "", // [02470]난포호르몬제 및 황체호르몬제 + @SerialName("DEL_YN") val delYn: String = "", // 정상 + @SerialName("DUR_SEQ") val durSeq: String = "", // 1893 + @SerialName("FORM_NAME") + val formName: String = "", // 연질캡슐제, 현탁상/유화주사제/용액용분말주사제/서방성현탁액용분말주사제/용액용동결건조분말주사제/현탁액용동결건조분말주사제/서방성현탁액용동결건조분말주사제/리포좀화현탁액용동결건조분말주사제/현탁액주사제/서방성현탁액성주사제/용액주사제 + @SerialName("GRADE") val grade: String = "", // 1등급 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000100 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Progesterone + @SerialName("INGR_NAME") val ingrKorName: String = "", // 프로게스테론 + @SerialName("MIX_INGR") val mixIngr: String = "", + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20081211 + @SerialName("ORI_INGR") val oriIngr: String = "", // [M040719]프로게스테론/[M086429]미분화프로게스테론/[M252921]프로게스테론(미분화) + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 임부에 대한 안전성 미확립. + @SerialName("REMARK") val remark: String = "", // 경구 + @SerialName("TYPE_NAME") val typeName: String = "", // 임부금기 + ) + } + } + + @Serializable + data class Header( + @SerialName("resultCode") val resultCode: String = "", // 00 + @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. + ) +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrSpecialtyAgeGroupTabooInfoResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrSpecialtyAgeGroupTabooInfoResponse.kt new file mode 100644 index 000000000..fa6670e5a --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrSpecialtyAgeGroupTabooInfoResponse.kt @@ -0,0 +1,67 @@ +package com.android.mediproject.core.model.datagokr.duringr + + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class DurIngrSpecialtyAgeGroupTabooInfoResponse( + @SerialName("body") val body: Body = Body(), + @SerialName("header") val header: Header = Header(), +) { + @Serializable + data class Body( + @SerialName("items") val items: List = listOf(), + @SerialName("numOfRows") val numOfRows: Int = 0, // 15 + @SerialName("pageNo") val pageNo: Int = 0, // 1 + @SerialName("totalCount") val totalCount: Int = 0, // 1 + ) { + @Serializable + data class Item( + @SerialName("item") val item: Item = Item(), + ) { + + /** + * @param durSeq DUR번호 + * @param typeName DUR유형 + * @param mixType 복합제구분(단일/복합) + * @param ingrCode DUR성분코드 + * @param ingrKorName DUR성분 명 + * @param ingrEngName DUR성분 영문명 + * @param mixIngr 복합제 + * @param oriIngr 관계성분 + * @param className 약효분류 + * @param ageBase 나이대 + * @param formName 제형 + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param delYn 상태(정상/삭제) + */ + @Serializable + data class Item( + @SerialName("AGE_BASE") val ageBase: String = "", // 18세 이하 + @SerialName("CLASS_NAME") val className: String = "", // [03960]당뇨병용제 + @SerialName("DEL_YN") val delYn: String = "", // 정상 + @SerialName("DUR_SEQ") val durSeq: String = "", // 455 + @SerialName("FORM_NAME") val formName: String = "", // 정제 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000149 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Acarbose + @SerialName("INGR_NAME") val ingrKorName: String = "", // 아카보즈 + @SerialName("MIX_INGR") val mixIngr: String = "", + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20140109 + @SerialName("ORI_INGR") val oriIngr: String = "", // [M085039]아카보즈 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 안전성 및 유효성 미확립 + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_NAME") val typeName: String = "", // 특정연령대금기 + ) + } + } + + @Serializable + data class Header( + @SerialName("resultCode") val resultCode: String = "", // 00 + @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. + ) +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/elderlycaution/ElderlyCautionDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/remote/elderlycaution/ElderlyCautionDto.kt index 049b1ebef..ba53cff5c 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/elderlycaution/ElderlyCautionDto.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/remote/elderlycaution/ElderlyCautionDto.kt @@ -56,22 +56,22 @@ fun ElderlyCautionResponse.Body.Item.toElderlyCautionDto() = ElderlyCautionDto( changeDate = changeDate.toLocalDate("yyyyMMdd"), chart = cHART, classCode = cLASSCODE, - className = cLASSNAME, + className = className, entpName = entpName, etcOtcName = etcOtcName, - formName = fORMNAME, - ingrCode = iNGRCODE, - ingrEngName = iNGRENGNAME, + formName = formName, + ingrCode = ingrCode, + ingrEngName = ingrEngName, ingrEngNameFull = iNGRENGNAMEFULL, - ingrName = iNGRNAME, + ingrName = ingrKorName, itemName = iTEMNAME, itemPermitDate = iTEMPERMITDATE.toLocalDate("yyyyMMdd"), itemSeq = iTEMSEQ, mainIngr = mAININGR, - minIngr = mIXINGR, - mixType = mIXTYPE, - notificationDate = nOTIFICATIONDATE.toLocalDate("yyyyMMdd"), - prohibitionContent = pROHBTCONTENT, - remark = rEMARK, - typeName = tYPENAME, + minIngr = mixIngr, + mixType = mixType, + notificationDate = notificationDate.toLocalDate("yyyyMMdd"), + prohibitionContent = prohibitContent, + remark = remark, + typeName = typeName, ) diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/elderlycaution/ElderlyCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/remote/elderlycaution/ElderlyCautionResponse.kt index 88ab515c1..a0d7c14a5 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/elderlycaution/ElderlyCautionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/remote/elderlycaution/ElderlyCautionResponse.kt @@ -14,7 +14,7 @@ data class ElderlyCautionResponse( @SerialName("items") val items: List, @SerialName("numOfRows") val numOfRows: Int, // 15 @SerialName("pageNo") val pageNo: Int, // 1 - @SerialName("totalCount") val totalCount: Int // 1 + @SerialName("totalCount") val totalCount: Int, // 1 ) { /** * 노인안전정보 @@ -22,50 +22,50 @@ data class ElderlyCautionResponse( * @param changeDate 변경일자 * @param cHART 모양 * @param cLASSCODE 분류코드 - * @param cLASSNAME 분류명 + * @param className 분류명 * @param entpName 업체명 * @param etcOtcName 구분 - * @param fORMNAME 제형 - * @param iNGRCODE 성분코드 - * @param iNGRENGNAME 성분영문명 + * @param formName 제형 + * @param ingrCode 성분코드 + * @param ingrEngName 성분영문명 * @param iNGRENGNAMEFULL 성분영문명(전체) - * @param iNGRNAME 성분명 + * @param ingrKorName 성분명 * @param iTEMNAME 품목명 * @param iTEMSEQ 품목일련번호 * @param iTEMPERMITDATE 허가일자 * @param mAININGR 성분내용 - * @param mIXINGR 성분내용 - * @param mIXTYPE 성분유형 - * @param nOTIFICATIONDATE 통지일자 - * @param pROHBTCONTENT 금기내용 - * @param rEMARK 비고 - * @param tYPENAME 유형 + * @param mixIngr 성분내용 + * @param mixType 성분유형 + * @param notificationDate 통지일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param typeName 유형 */ @Serializable data class Item( @SerialName("CHANGE_DATE") val changeDate: String, // 20221201 @SerialName("CHART") val cHART: String, // 청색의 원형 필름코팅정 @SerialName("CLASS_CODE") val cLASSCODE: String, // 01170 - @SerialName("CLASS_NAME") val cLASSNAME: String, // 정신신경용제 + @SerialName("CLASS_NAME") val className: String, // 정신신경용제 @SerialName("ENTP_NAME") val entpName: String, // 환인제약(주) @SerialName("ETC_OTC_NAME") val etcOtcName: String, // 전문의약품 - @SerialName("FORM_NAME") val fORMNAME: String, // 필름코팅정 - @SerialName("INGR_CODE") val iNGRCODE: String, // D000809 - @SerialName("INGR_ENG_NAME") val iNGRENGNAME: String, // Amitriptyline + @SerialName("FORM_NAME") val formName: String, // 필름코팅정 + @SerialName("INGR_CODE") val ingrCode: String, // D000809 + @SerialName("INGR_ENG_NAME") val ingrEngName: String, // Amitriptyline @SerialName("INGR_ENG_NAME_FULL") val iNGRENGNAMEFULL: String, // Amitriptyline(아미트리프틸린) - @SerialName("INGR_NAME") val iNGRNAME: String, // 아미트리프틸린 + @SerialName("INGR_NAME") val ingrKorName: String, // 아미트리프틸린 @SerialName("ITEM_NAME") val iTEMNAME: String, // 에나폰정10밀리그램(아미트리프틸린염산염) @SerialName("ITEM_PERMIT_DATE") val iTEMPERMITDATE: String, // 19700220 @SerialName("ITEM_SEQ") val iTEMSEQ: String, // 197000079 @SerialName("MAIN_INGR") val mAININGR: String, // [M223101]아미트리프틸린염산염 - @SerialName("MIX_INGR") val mIXINGR: String, // [M223101]아미트리프틸린염산염 - @SerialName("MIX_TYPE") val mIXTYPE: String, // 단일 - @SerialName("NOTIFICATION_DATE") val nOTIFICATIONDATE: String, // 20150728 + @SerialName("MIX_INGR") val mixIngr: String, // [M223101]아미트리프틸린염산염 + @SerialName("MIX_TYPE") val mixType: String, // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String, // 20150728 @SerialName("PROHBT_CONTENT") - val pROHBTCONTENT: String, // 노인에서의 삼환계 항우울제 사용은 기립성 저혈압, 비틀거림, 항콜린작용에 의한 구갈, 배뇨곤란, 변비, 안내압항진 등이 나타나기 쉬움으로 소량으로 신중투여 - @SerialName("REMARK") val rEMARK: String?, // null - @SerialName("TYPE_NAME") val tYPENAME: String // 노인주의 + val prohibitContent: String, // 노인에서의 삼환계 항우울제 사용은 기립성 저혈압, 비틀거림, 항콜린작용에 의한 구갈, 배뇨곤란, 변비, 안내압항진 등이 나타나기 쉬움으로 소량으로 신중투여 + @SerialName("REMARK") val remark: String?, // null + @SerialName("TYPE_NAME") val typeName: String, // 노인주의 ) } -} \ No newline at end of file +} From 8761675fe392d740bc4426a398e98f1554d4aea3 Mon Sep 17 00:00:00 2001 From: JSPark <48265129+pknujsp@users.noreply.github.com> Date: Wed, 26 Jul 2023 18:23:10 +0900 Subject: [PATCH 03/13] =?UTF-8?q?#193=20DUR=20=ED=92=88=EB=AA=A9=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EC=9D=91=EB=8B=B5=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EC=99=84=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/data/remote/dur/DurRepository.kt | 3 +- .../ElderlyCautionRepository.kt | 6 +- .../ElderlyCautionRepositoryImpl.kt | 5 +- .../mediproject/core/domain/GetDurUseCase.kt | 17 +-- .../core/domain/GetElderlyCautionUseCase.kt | 4 +- .../DurIngrCapacityAttentionResponse.kt} | 4 +- .../DurIngrCombinationTabooResponse.kt} | 4 +- .../DurIngrDosingCautionResponse.kt} | 4 +- ...urIngrEfficacyGroupDuplicationResponse.kt} | 4 +- .../DurIngrPregnantWomanTabooResponse.kt} | 4 +- .../DurIngrElderlyCautionResponse.kt | 2 +- .../DurIngrSpecialtyAgeGroupTabooResponse.kt} | 4 +- .../DurProductCapacityAttentionResponse.kt | 74 +++++++++++ .../DurProductCombinationTabooResponse.kt | 117 ++++++++++++++++++ .../dosing/DurProductDosingCautionResponse.kt | 73 +++++++++++ ...ProductEfficacyGroupDuplicationResponse.kt | 85 +++++++++++++ ...uctExReleaseTableSplitAttentionResponse.kt | 64 ++++++++++ .../DurProductPregnantWomanTabooResponse.kt | 74 +++++++++++ .../productlist/DurProductListResponse.kt | 80 ++++++++++++ .../DurProductElderlyCautionResponse.kt | 75 +++++++++++ ...urProductSpecialtyAgeGroupTabooResponse.kt | 74 +++++++++++ .../adminaction/AdminActionListItemDto.kt | 16 +-- .../adminaction/AdminActionListResponse.kt | 22 ++-- .../core/model/remote/dur/DurItemDto.kt | 85 ------------- .../core/model/remote/dur/DurResponse.kt | 75 ----------- .../elderlycaution/ElderlyCautionDto.kt | 77 ------------ .../elderlycaution/ElderlyCautionResponse.kt | 71 ----------- .../recall/DetailRecallSuspensionItemDto.kt | 6 +- .../recall/DetailRecallSuspensionResponse.kt | 12 +- .../network/datasource/dur/DurDataSource.kt | 1 - .../ElderlyCautionDataSource.kt | 5 +- .../ElderlyCautionDataSourceImpl.kt | 3 +- .../datagokr/DurProductInfoNetworkApi.kt | 9 +- .../item/MedicineSafeUsageViewModel.kt | 23 ++-- 34 files changed, 794 insertions(+), 388 deletions(-) rename core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/{DurIngrCapacityAttentionInfoResponse.kt => capacity/DurIngrCapacityAttentionResponse.kt} (96%) rename core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/{DurIngrCombinationTabooInfoResponse.kt => combination/DurIngrCombinationTabooResponse.kt} (97%) rename core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/{DurIngrDosingCautionInfoResponse.kt => dosing/DurIngrDosingCautionResponse.kt} (96%) rename core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/{DurIngrEfficacyGroupDuplicationInfoResponse.kt => efficacygroupduplication/DurIngrEfficacyGroupDuplicationResponse.kt} (95%) rename core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/{DurIngrPregnantWomanTabooInfoResponse.kt => pregnancy/DurIngrPregnantWomanTabooResponse.kt} (96%) rename core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/{ => senior}/DurIngrElderlyCautionResponse.kt (97%) rename core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/{DurIngrSpecialtyAgeGroupTabooInfoResponse.kt => specialtyagegroup/DurIngrSpecialtyAgeGroupTabooResponse.kt} (95%) create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/capacity/DurProductCapacityAttentionResponse.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/combination/DurProductCombinationTabooResponse.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/dosing/DurProductDosingCautionResponse.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplicationResponse.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/pregnancy/DurProductPregnantWomanTabooResponse.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/productlist/DurProductListResponse.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductElderlyCautionResponse.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTabooResponse.kt delete mode 100644 core/model/src/main/java/com/android/mediproject/core/model/remote/dur/DurItemDto.kt delete mode 100644 core/model/src/main/java/com/android/mediproject/core/model/remote/dur/DurResponse.kt delete mode 100644 core/model/src/main/java/com/android/mediproject/core/model/remote/elderlycaution/ElderlyCautionDto.kt delete mode 100644 core/model/src/main/java/com/android/mediproject/core/model/remote/elderlycaution/ElderlyCautionResponse.kt diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/dur/DurRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/dur/DurRepository.kt index a7b3e7745..95b2b2dde 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/dur/DurRepository.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/remote/dur/DurRepository.kt @@ -1,6 +1,5 @@ package com.android.mediproject.core.data.remote.dur -import com.android.mediproject.core.model.remote.dur.DurResponse import kotlinx.coroutines.flow.Flow interface DurRepository { @@ -8,4 +7,4 @@ interface DurRepository { itemName: String?, itemSeq: String?, ): Flow> -} \ No newline at end of file +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/elderlycaution/ElderlyCautionRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/elderlycaution/ElderlyCautionRepository.kt index 2dc6101b4..18a684239 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/elderlycaution/ElderlyCautionRepository.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/remote/elderlycaution/ElderlyCautionRepository.kt @@ -1,10 +1,8 @@ package com.android.mediproject.core.data.remote.elderlycaution -import com.android.mediproject.core.model.remote.elderlycaution.ElderlyCautionResponse - interface ElderlyCautionRepository { suspend fun getElderlyCaution( itemName: String?, itemSeq: String?, - ): Result -} \ No newline at end of file + ): Result +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/elderlycaution/ElderlyCautionRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/elderlycaution/ElderlyCautionRepositoryImpl.kt index 1e5f0cda9..9936057e6 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/elderlycaution/ElderlyCautionRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/remote/elderlycaution/ElderlyCautionRepositoryImpl.kt @@ -1,13 +1,12 @@ package com.android.mediproject.core.data.remote.elderlycaution -import com.android.mediproject.core.model.remote.elderlycaution.ElderlyCautionResponse import com.android.mediproject.core.network.datasource.elderlycaution.ElderlyCautionDataSource import javax.inject.Inject class ElderlyCautionRepositoryImpl @Inject constructor(private val dataSource: ElderlyCautionDataSource) : ElderlyCautionRepository { - override suspend fun getElderlyCaution(itemName: String?, itemSeq: String?): Result = + override suspend fun getElderlyCaution(itemName: String?, itemSeq: String?): Result = dataSource.getElderlyCaution(itemName = itemName, itemSeq = itemSeq).map { it.body.items.first() } -} \ No newline at end of file +} diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/GetDurUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/GetDurUseCase.kt index c2bdf36c5..89ad2a224 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/GetDurUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/GetDurUseCase.kt @@ -1,7 +1,7 @@ package com.android.mediproject.core.domain import com.android.mediproject.core.data.remote.dur.DurRepository -import com.android.mediproject.core.model.remote.dur.toDto +import com.android.mediproject.core.model.datagokr.durproduct.productlist.toDto import kotlinx.coroutines.flow.channelFlow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.map @@ -14,13 +14,16 @@ class GetDurUseCase @Inject constructor(private val durRepository: DurRepository itemSeq: String?, ) = channelFlow { durRepository.getDur(itemName, itemSeq).map { result -> - result.fold(onSuccess = { - Result.success(it.toDto()) - }, onFailure = { - Result.failure(it) - }) + result.fold( + onSuccess = { + Result.success(it.toDto()) + }, + onFailure = { + Result.failure(it) + }, + ) }.collectLatest { send(it) } } -} \ No newline at end of file +} diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/GetElderlyCautionUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/GetElderlyCautionUseCase.kt index cd88f2e99..be8cb1aee 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/GetElderlyCautionUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/GetElderlyCautionUseCase.kt @@ -1,8 +1,8 @@ package com.android.mediproject.core.domain import com.android.mediproject.core.data.remote.elderlycaution.ElderlyCautionRepository -import com.android.mediproject.core.model.remote.elderlycaution.ElderlyCautionDto -import com.android.mediproject.core.model.remote.elderlycaution.toElderlyCautionDto +import com.android.mediproject.core.model.datagokr.durproduct.senior.ElderlyCautionDto +import com.android.mediproject.core.model.datagokr.durproduct.senior.toElderlyCautionDto import javax.inject.Inject class GetElderlyCautionUseCase @Inject constructor( diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrCapacityAttentionInfoResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/capacity/DurIngrCapacityAttentionResponse.kt similarity index 96% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrCapacityAttentionInfoResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/capacity/DurIngrCapacityAttentionResponse.kt index d99a4aee8..8066a93dd 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrCapacityAttentionInfoResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/capacity/DurIngrCapacityAttentionResponse.kt @@ -1,11 +1,11 @@ -package com.android.mediproject.core.model.datagokr.duringr +package com.android.mediproject.core.model.datagokr.duringr.capacity import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurIngrCapacityAttentionInfoResponse( +data class DurIngrCapacityAttentionResponse( @SerialName("body") val body: Body = Body(), @SerialName("header") val header: Header = Header(), ) { diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrCombinationTabooInfoResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/combination/DurIngrCombinationTabooResponse.kt similarity index 97% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrCombinationTabooInfoResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/combination/DurIngrCombinationTabooResponse.kt index e10ad6e58..d2ebffbeb 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrCombinationTabooInfoResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/combination/DurIngrCombinationTabooResponse.kt @@ -1,11 +1,11 @@ -package com.android.mediproject.core.model.datagokr.duringr +package com.android.mediproject.core.model.datagokr.duringr.combination import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurIngrCombinationTabooInfoResponse( +data class DurIngrCombinationTabooResponse( @SerialName("body") val body: Body = Body(), @SerialName("header") val header: Header = Header(), ) { diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrDosingCautionInfoResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/dosing/DurIngrDosingCautionResponse.kt similarity index 96% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrDosingCautionInfoResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/dosing/DurIngrDosingCautionResponse.kt index d130448b6..8c10b3b5a 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrDosingCautionInfoResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/dosing/DurIngrDosingCautionResponse.kt @@ -1,11 +1,11 @@ -package com.android.mediproject.core.model.datagokr.duringr +package com.android.mediproject.core.model.datagokr.duringr.dosing import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurIngrDosingCautionInfoResponse( +data class DurIngrDosingCautionResponse( @SerialName("body") val body: Body = Body(), @SerialName("header") val header: Header = Header(), ) { diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrEfficacyGroupDuplicationInfoResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/efficacygroupduplication/DurIngrEfficacyGroupDuplicationResponse.kt similarity index 95% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrEfficacyGroupDuplicationInfoResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/efficacygroupduplication/DurIngrEfficacyGroupDuplicationResponse.kt index 59cc93aed..2164b0c57 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrEfficacyGroupDuplicationInfoResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/efficacygroupduplication/DurIngrEfficacyGroupDuplicationResponse.kt @@ -1,11 +1,11 @@ -package com.android.mediproject.core.model.datagokr.duringr +package com.android.mediproject.core.model.datagokr.duringr.efficacygroupduplication import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurIngrEfficacyGroupDuplicationInfoResponse( +data class DurIngrEfficacyGroupDuplicationResponse( @SerialName("body") val body: Body = Body(), @SerialName("header") val header: Header = Header(), ) { diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrPregnantWomanTabooInfoResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/pregnancy/DurIngrPregnantWomanTabooResponse.kt similarity index 96% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrPregnantWomanTabooInfoResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/pregnancy/DurIngrPregnantWomanTabooResponse.kt index 038c101c7..4d532ff75 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrPregnantWomanTabooInfoResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/pregnancy/DurIngrPregnantWomanTabooResponse.kt @@ -1,11 +1,11 @@ -package com.android.mediproject.core.model.datagokr.duringr +package com.android.mediproject.core.model.datagokr.duringr.pregnancy import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurIngrPregnantWomanTabooInfoResponse( +data class DurIngrPregnantWomanTabooResponse( @SerialName("body") val body: Body = Body(), @SerialName("header") val header: Header = Header(), ) { diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrElderlyCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/DurIngrElderlyCautionResponse.kt similarity index 97% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrElderlyCautionResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/DurIngrElderlyCautionResponse.kt index eea6d8dae..fa16e053d 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrElderlyCautionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/DurIngrElderlyCautionResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.datagokr.duringr +package com.android.mediproject.core.model.datagokr.duringr.senior import kotlinx.serialization.SerialName diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrSpecialtyAgeGroupTabooInfoResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/specialtyagegroup/DurIngrSpecialtyAgeGroupTabooResponse.kt similarity index 95% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrSpecialtyAgeGroupTabooInfoResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/specialtyagegroup/DurIngrSpecialtyAgeGroupTabooResponse.kt index fa6670e5a..a41db1bfb 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/DurIngrSpecialtyAgeGroupTabooInfoResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/specialtyagegroup/DurIngrSpecialtyAgeGroupTabooResponse.kt @@ -1,11 +1,11 @@ -package com.android.mediproject.core.model.datagokr.duringr +package com.android.mediproject.core.model.datagokr.duringr.specialtyagegroup import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurIngrSpecialtyAgeGroupTabooInfoResponse( +data class DurIngrSpecialtyAgeGroupTabooResponse( @SerialName("body") val body: Body = Body(), @SerialName("header") val header: Header = Header(), ) { diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/capacity/DurProductCapacityAttentionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/capacity/DurProductCapacityAttentionResponse.kt new file mode 100644 index 000000000..21574c669 --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/capacity/DurProductCapacityAttentionResponse.kt @@ -0,0 +1,74 @@ +package com.android.mediproject.core.model.datagokr.durproduct.capacity + + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class DurProductCapacityAttentionResponse( + @SerialName("body") val body: Body = Body(), + @SerialName("header") val header: Header = Header(), +) { + @Serializable + data class Body( + @SerialName("items") val items: List = listOf(), + @SerialName("numOfRows") val numOfRows: Int = 0, // 3 + @SerialName("pageNo") val pageNo: Int = 0, // 1 + @SerialName("totalCount") val totalCount: Int = 0, // 1 + ) { + /** + * @param changeDate 변경일자 + * @param chart 성상 + * @param classCode 약효분류코드 + * @param className 약효분류 + * @param entpName 업체명 + * @param etcOtcName 전문일반 구분명 + * @param formName 제형명 + * @param ingrCode 성분코드 + * @param ingrEngName 성분영문명 + * @param ingrEngNameFull 성분영문명(전체) + * @param ingrName 성분명 + * @param itemName 제품명 + * @param itemPermitDate 품목허가일자 + * @param itemSeq 품목기준코드 + * @param mainIngr 주성분 + * @param mixIngr 복합제 + * @param mixType 복합제구분(단일/복합) + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param typeName DUR유형 + * + */ + @Serializable + data class Item( + @SerialName("CHANGE_DATE") val changeDate: String = "", // 20190826 + @SerialName("CHART") val chart: String = "", // 미황색의 원형 정제 + @SerialName("CLASS_CODE") val classCode: String = "", // 01410 + @SerialName("CLASS_NAME") val className: String = "", // 항히스타민제 + @SerialName("ENTP_NAME") val entpName: String = "", // (주)유한양행 + @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 일반의약품 + @SerialName("FORM_NAME") val formName: String = "", // 나정 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000893 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Chlorpheniramine Maleate + @SerialName("INGR_ENG_NAME_FULL") val ingrEngNameFull: String = "", // Chlorpheniramine Maleate(클로르페니라민말레산염) + @SerialName("INGR_NAME") val ingrName: String = "", // 클로르페니라민말레산염 + @SerialName("ITEM_NAME") val itemName: String = "", // 페니라민정(클로르페니라민말레산염) + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 19601010 + @SerialName("ITEM_SEQ") val itemSeq: String = "", // 196000011 + @SerialName("MAIN_INGR") val mainIngr: String = "", // [M223211]클로르페니라민말레산염 + @SerialName("MIX_INGR") val mixIngr: String = "", // null + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20180831 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 클로르페니라민말레산염 24mg + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_NAME") val typeName: String = "", // 용량주의 + ) + } + + @Serializable + data class Header( + @SerialName("resultCode") val resultCode: String = "", // 00 + @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. + ) +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/combination/DurProductCombinationTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/combination/DurProductCombinationTabooResponse.kt new file mode 100644 index 000000000..64c56f40a --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/combination/DurProductCombinationTabooResponse.kt @@ -0,0 +1,117 @@ +package com.android.mediproject.core.model.datagokr.durproduct.combination + + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class DurProductCombinationTabooResponse( + @SerialName("body") val body: Body = Body(), + @SerialName("header") val header: Header = Header(), +) { + @Serializable + data class Body( + @SerialName("items") val items: List = listOf(), + @SerialName("numOfRows") val numOfRows: Int = 0, // 15 + @SerialName("pageNo") val pageNo: Int = 0, // 1 + @SerialName("totalCount") val totalCount: Int = 0, // 5 + ) { + /** + * @param bizrNo 사업자등록번호 + * @param changeDate 변경일자 + * @param chart 성상 + * @param classCode 약효분류코드 + * @param className 약효분류 + * @param durSeq DUR 일련번호 + * @param entpName 업체명 + * @param etcOtcCode 전문일반 구분코드 + * @param etcOtcName 전문일반 구분명 + * @param formCode 제형코드 + * @param formName 제형명 + * @param ingrCode 성분코드 + * @param ingrEngName 성분영문명 + * @param ingrKorName 성분명 + * @param itemName 제품명 + * @param itemPermitDate 품목허가일자 + * @param itemSeq 품목기준코드 + * @param mainIngr 주성분 + * @param mix 복합제 구분(단일/복합) + * @param mixIngr 복합제 + * @param mixtureChangeDate 병용변경일자 + * @param mixtureChart 병용금기 성상 + * @param mixtureClassCode 병용금기 분류코드 + * @param mixtureClassName 병용금기 분류명 + * @param mixtureDurSeq 병용금기 DUR번호 + * @param mixtureEntpName 병용금기 업체명 + * @param mixtureEtcOtcCode 병용금기 전문일반구분코드 + * @param mixtureEtcOtcName 병용금기 전문일반구분명 + * @param mixtureFormCode 병용금기 제형코드 + * @param mixtureFormName 병용금기 제형명 + * @param mixtureIngrCode 병용금기 성분코드 + * @param mixtureIngrEngName 병용금기 성분영문명 + * @param mixtureIngrKorName 병용금기 성분명 + * @param mixtureItemName 병용금기 제품명 + * @param mixtureItemPermitDate 병용금기 허가일자 + * @param mixtureItemSeq 병용금기 품목기준코드 + * @param mixtureMainIngr 병용금기 주성분 + * @param mixtureMix 병용금기 복합제구분 + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param typeCode 금기 유형코드 + * @param typeName 금기 유형명 + */ + @Serializable + data class Item( + @SerialName("BIZRNO") val bizrNo: String = "", // 1188100450 + @SerialName("CHANGE_DATE") val changeDate: String = "", // null + @SerialName("CHART") val chart: String = "", // 무색 맑은 용액이 충전된 무색의 앰플 주사제 + @SerialName("CLASS_CODE") val classCode: String = "", // 01120 + @SerialName("CLASS_NAME") val className: String = "", // 최면진정제 + @SerialName("DUR_SEQ") val durSeq: String = "", // 705 + @SerialName("ENTP_NAME") val entpName: String = "", // 부광약품(주) + @SerialName("ETC_OTC_CODE") val etcOtcCode: String = "", // 02 + @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 전문의약품 + @SerialName("FORM_CODE") val formCode: String = "", // 210101 + @SerialName("FORM_NAME") val formName: String = "", // 용액주사제 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000007 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Midazolam + @SerialName("INGR_KOR_NAME") val ingrKorName: String = "", // 미다졸람 + @SerialName("ITEM_NAME") val itemName: String = "", // 부광미다졸람주사15밀리그램/3밀리리터(수출용) + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 20200413 + @SerialName("ITEM_SEQ") val itemSeq: String = "", // 202002585 + @SerialName("MAIN_INGR") val mainIngr: String = "", // [M222760]미다졸람 + @SerialName("MIX") val mix: String = "", // 단일 + @SerialName("MIX_INGR") val mixIngr: String = "", // null + @SerialName("MIXTURE_CHANGE_DATE") val mixtureChangeDate: String = "", // 20230530 + @SerialName("MIXTURE_CHART") val mixtureChart: String = "", // 흰색의 장방형 필름코팅정 + @SerialName("MIXTURE_CLASS_CODE") val mixtureClassCode: String = "", // 06290 + @SerialName("MIXTURE_CLASS_NAME") val mixtureClassName: String = "", // 기타의 화학요법제 + @SerialName("MIXTURE_DUR_SEQ") val mixtureDurSeq: String = "", // 705 + @SerialName("MIXTURE_ENTP_NAME") val mixtureEntpName: String = "", // 한국애브비(주) + @SerialName("MIXTURE_ETC_OTC_CODE") val mixtureEtcOtcCode: String = "", // 02 + @SerialName("MIXTURE_ETC_OTC_NAME") val mixtureEtcOtcName: String = "", // 전문의약품 + @SerialName("MIXTURE_FORM_CODE") val mixtureFormCode: String = "", // 010201 + @SerialName("MIXTURE_FORM_NAME") val mixtureFormName: String = "", // 필름코팅정 + @SerialName("MIXTURE_INGR_CODE") val mixtureIngrCode: String = "", // D000712 + @SerialName("MIXTURE_INGR_ENG_NAME") val mixtureIngrEngName: String = "", // Ritonavir + @SerialName("MIXTURE_INGR_KOR_NAME") val mixtureIngrKorName: String = "", // 리토나비르 + @SerialName("MIXTURE_ITEM_NAME") val mixtureItemName: String = "", // 노비르정(리토나비르) + @SerialName("MIXTURE_ITEM_PERMIT_DATE") val mixtureItemPermitDate: String = "", // 20110901 + @SerialName("MIXTURE_ITEM_SEQ") val mixtureItemSeq: String = "", // 201106064 + @SerialName("MIXTURE_MAIN_INGR") val mixtureMainIngr: String = "", // [M259362]리토나비르 + @SerialName("MIXTURE_MIX") val mixtureMix: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20091203 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 진정작용의 연장 또는 증가, 호흡저하 + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_CODE") val typeCode: String = "", // A + @SerialName("TYPE_NAME") val typeName: String = "", // 병용금기 + ) + } + + @Serializable + data class Header( + @SerialName("resultCode") val resultCode: String = "", // 00 + @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. + ) +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/dosing/DurProductDosingCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/dosing/DurProductDosingCautionResponse.kt new file mode 100644 index 000000000..62285fdc5 --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/dosing/DurProductDosingCautionResponse.kt @@ -0,0 +1,73 @@ +package com.android.mediproject.core.model.datagokr.durproduct.dosing + + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class DurProductDosingCautionResponse( + @SerialName("body") val body: Body = Body(), + @SerialName("header") val header: Header = Header(), +) { + @Serializable + data class Body( + @SerialName("items") val items: List = listOf(), + @SerialName("numOfRows") val numOfRows: Int = 0, // 3 + @SerialName("pageNo") val pageNo: Int = 0, // 1 + @SerialName("totalCount") val totalCount: Int = 0, // 1 + ) { + /** + * @param changeDate 변경일자 + * @param chart 성상 + * @param classCode 약효분류코드 + * @param className 약효분류 + * @param entpName 업체명 + * @param etcOtcName 전문일반 구분명 + * @param formName 제형명 + * @param ingrCode 성분코드 + * @param ingrEngName 성분영문명 + * @param ingrEngNameFull 성분영문명(전체) + * @param ingrName 성분명 + * @param itemName 제품명 + * @param itemPermitDate 품목허가일자 + * @param itemSeq 품목기준코드 + * @param mainIngr 주성분 + * @param mixIngr 복합제 + * @param mixType 복합제구분(단일/복합) + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param typeName DUR유형 + */ + @Serializable + data class Item( + @SerialName("CHANGE_DATE") val changeDate: String = "", // 20140103 + @SerialName("CHART") val chart: String = "", // 흰색의 원형 필름코팅정 + @SerialName("CLASS_CODE") val classCode: String = "", // 02390 + @SerialName("CLASS_NAME") val className: String = "", // 기타의 소화기관용약 + @SerialName("ENTP_NAME") val entpName: String = "", // 동화약품(주) + @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 전문의약품 + @SerialName("FORM_NAME") val formName: String = "", // 필름코팅정 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000425 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Metoclopramide + @SerialName("INGR_ENG_NAME_FULL") val ingrEngNameFull: String = "", // Metoclopramide(메토클로프라미드) + @SerialName("INGR_NAME") val ingrName: String = "", // 메토클로프라미드 + @SerialName("ITEM_NAME") val itemName: String = "", // 맥페란정(메토클로프라미드) + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 19720210 + @SerialName("ITEM_SEQ") val itemSeq: String = "", // 197200484 + @SerialName("MAIN_INGR") val mainIngr: String = "", // [M050465]메토클로프라미드 + @SerialName("MIX_INGR") val mixIngr: String = "", // null + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20150331 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // null + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_NAME") val typeName: String = "", // 투여기간주의 + ) + } + + @Serializable + data class Header( + @SerialName("resultCode") val resultCode: String = "", // 00 + @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. + ) +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplicationResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplicationResponse.kt new file mode 100644 index 000000000..830e7e1ab --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplicationResponse.kt @@ -0,0 +1,85 @@ +package com.android.mediproject.core.model.datagokr.durproduct.efficacygroupduplication + + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class DurProductEfficacyGroupDuplicationResponse( + @SerialName("body") val body: Body = Body(), + @SerialName("header") val header: Header = Header(), +) { + @Serializable + data class Body( + @SerialName("items") val items: List = listOf(), + @SerialName("numOfRows") val numOfRows: Int = 0, // 3 + @SerialName("pageNo") val pageNo: Int = 0, // 1 + @SerialName("totalCount") val totalCount: Int = 0, // 1 + ) { + /** + * @param changeDate 변경일자 + * @param chart 성상 + * @param classCode 약효분류코드 + * @param entpName 업체명 + * @param etcOtcName 전문일반 구분명 + * @param formName 제형명 + * @param ingrCode 성분코드 + * @param ingrEngName 성분영문명 + * @param ingrName 성분명 + * @param itemName 제품명 + * @param itemPermitDate 품목허가일자 + * @param itemSeq 품목기준코드 + * @param mainIngr 주성분 + * @param mixIngr 복합제 + * @param bizrNo 사업자등록번호 + * @param className 약효분류 + * @param durSeq DUR 일련번호 + * @param etcOtcCode 전문일반 구분코드 + * @param formCode 제형코드 + * @param ingrEngNameFull 성분영문명(전체) + * @param effectName 효능 + * @param mix 복합제 구분(단일/복합) + * @param formCodeName 제형코드명 + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param typeName DUR유형 + */ + @Serializable + data class Item( + @SerialName("BIZRNO") val bizrNo: String = "", // 1138106691 + @SerialName("CHANGE_DATE") val changeDate: String = "", // 20131231 + @SerialName("CHART") val chart: String = "", // 백색의 원형정제이다. + @SerialName("CLASS_CODE") val classCode: String = "", // 01190 + @SerialName("CLASS_NAME") val className: String = "", // 기타의 중추신경용약 + @SerialName("DUR_SEQ") val durSeq: String = "", // 2600 + @SerialName("EFFECT_NAME") val effectName: String = "", // 정신신경용제 + @SerialName("ENTP_NAME") val entpName: String = "", // 아주약품(주) + @SerialName("ETC_OTC_CODE") val etcOtcCode: String = "", // 02 + @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 전문의약품 + @SerialName("FORM_CODE") val formCode: String = "", // 010101 + @SerialName("FORM_CODE_NAME") val formCodeName: String = "", // 나정 + @SerialName("FORM_NAME") val formName: String = "", // 나정 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000468 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Orphenadrine Hydrochloride + @SerialName("INGR_ENG_NAME_FULL") val ingrEngNameFull: String = "", // Orphenadrine(오르페나드린) + @SerialName("INGR_NAME") val ingrName: String = "", // 오르페나드린염산염 + @SerialName("ITEM_NAME") val itemName: String = "", // 닉신정(오르페나드린염산염)(수출용) + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 19841019 + @SerialName("ITEM_SEQ") val itemSeq: String = "", // 198400314 + @SerialName("MAIN_INGR") val mainIngr: String = "", // [M222877]오르페나드린염산염 + @SerialName("MIX") val mix: String = "", // 단일 + @SerialName("MIX_INGR") val mixIngr: String = "", // null + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20131227 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // null + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_NAME") val typeName: String = "", // 효능군중복 + ) + } + + @Serializable + data class Header( + @SerialName("resultCode") val resultCode: String = "", // 00 + @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. + ) +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt new file mode 100644 index 000000000..bd8897c98 --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt @@ -0,0 +1,64 @@ +package com.android.mediproject.core.model.datagokr.durproduct.extendedreleasetablet + + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class DurProductExReleaseTableSplitAttentionResponse( + @SerialName("body") val body: Body = Body(), + @SerialName("header") val header: Header = Header(), +) { + @Serializable + data class Body( + @SerialName("items") val items: List = listOf(), + @SerialName("numOfRows") val numOfRows: Int = 0, // 3 + @SerialName("pageNo") val pageNo: Int = 0, // 1 + @SerialName("totalCount") val totalCount: Int = 0, // 1 + ) { + + /** + * @param bizrNo 사업자등록번호 + * @param changeDate 변경일자 + * @param chart 성상 + * @param classCode 약효분류코드 + * @param className 약효분류 + * @param entpName 업체명 + * @param etcOtcName 전문일반 구분명 + * @param formCodeName 제형코드명 + * @param itemName 제품명 + * @param itemPermitDate 품목허가일자 + * @param itemSeq 품목기준코드 + * @param mainIngr 주성분 + * @param mix 복합제 구분(단일/복합) + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param typeName DUR유형 + */ + @Serializable + data class Item( + @SerialName("BIZRNO") val bizrNo: String = "", // 2188100518 + @SerialName("CHANGE_DATE") val changeDate: String = "", // 20210629 + @SerialName("CHART") val chart: String = "", // 내수용 : 연녹색의 원형 장용성 필름코팅정, 수출용 : 적색의 원형 장용성 필름코팅정 + @SerialName("CLASS_CODE") val classCode: String = "", // 03950 + @SerialName("CLASS_NAME") val className: String = "", // 효소제제 + @SerialName("ENTP_NAME") val entpName: String = "", // (주)에이프로젠바이오로직스 + @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 일반의약품 + @SerialName("FORM_CODE_NAME") val formCodeName: String = "", // 장용성필름코팅정 + @SerialName("ITEM_NAME") val itemName: String = "", // 키모랄에스정 + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 1971May6th + @SerialName("ITEM_SEQ") val itemSeq: String = "", // 197100081 + @SerialName("MAIN_INGR") val mainIngr: String = "", // [M051649]결정트립신/[M095415]브로멜라인/[M095415]브로멜라인/[M051649]결정트립신 + @SerialName("MIX") val mix: String = "", // 복합 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 분할불가 + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_NAME") val typeName: String = "", // 분할주의 + ) + } + + @Serializable + data class Header( + @SerialName("resultCode") val resultCode: String = "", // 00 + @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. + ) +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/pregnancy/DurProductPregnantWomanTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/pregnancy/DurProductPregnantWomanTabooResponse.kt new file mode 100644 index 000000000..93348f1d1 --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/pregnancy/DurProductPregnantWomanTabooResponse.kt @@ -0,0 +1,74 @@ +package com.android.mediproject.core.model.datagokr.durproduct.pregnancy + + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class DurProductPregnantWomanTabooResponse( + @SerialName("body") val body: Body = Body(), + @SerialName("header") val header: Header = Header(), +) { + @Serializable + data class Body( + @SerialName("items") val items: List = listOf(), + @SerialName("numOfRows") val numOfRows: Int = 0, // 3 + @SerialName("pageNo") val pageNo: Int = 0, // 1 + @SerialName("totalCount") val totalCount: Int = 0, // 1 + ) { + /** + * @param changeDate 변경일자 + * @param chart 성상 + * @param classCode 약효분류코드 + * @param className 약효분류 + * @param entpName 업체명 + * @param etcOtcName 전문일반 구분명 + * @param formName 제형명 + * @param ingrCode 성분코드 + * @param ingrEngName 성분영문명 + * @param ingrEngNameFull 성분영문명(전체) + * @param ingrName 성분명 + * @param itemName 제품명 + * @param itemPermitDate 품목허가일자 + * @param itemSeq 품목기준코드 + * @param mainIngr 주성분 + * @param mixIngr 복합제 + * @param mixType 복합제구분(단일/복합) + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param typeName DUR유형 + */ + @Serializable + data class Item( + @SerialName("CHANGE_DATE") val changeDate: String = "", // 20200327 + @SerialName("CHART") val chart: String = "", // 흰색의 원형 정제 + @SerialName("CLASS_CODE") val classCode: String = "", // 02170 + @SerialName("CLASS_NAME") val className: String = "", // 혈관확장제 + @SerialName("ENTP_NAME") val entpName: String = "", // 에이치케이이노엔(주) + @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 전문의약품 + @SerialName("FORM_NAME") val formName: String = "", // 나정 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000818 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Diltiazem + @SerialName("INGR_ENG_NAME_FULL") val ingrEngNameFull: String = "", // Diltiazem(딜티아젬) + @SerialName("INGR_NAME") val ingrName: String = "", // 딜티아젬 + @SerialName("ITEM_NAME") val itemName: String = "", // 헤르벤정(딜티아젬염산염) + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 19810720 + @SerialName("ITEM_SEQ") val itemSeq: String = "", // 198100012 + @SerialName("MAIN_INGR") val mainIngr: String = "", // [M222982]딜티아젬염산염 + @SerialName("MIX_INGR") val mixIngr: String = "", // null + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20081211 + @SerialName("PROHBT_CONTENT") + val prohibitContent: String = "", // "(경구) 동물실험에서 골격, 심장, 망막 및 혀에 기형 보고.출생자의 체중감소 및 생존수 감소, 분만지연, 사산수 증가 보고.(주사)동물 실험에서 최기형성 및 태자치사 작용 보고." + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_NAME") val typeName: String = "", // 임부금기 + ) + } + + @Serializable + data class Header( + @SerialName("resultCode") val resultCode: String = "", // 00 + @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. + ) +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/productlist/DurProductListResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/productlist/DurProductListResponse.kt new file mode 100644 index 000000000..deab7434a --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/productlist/DurProductListResponse.kt @@ -0,0 +1,80 @@ +package com.android.mediproject.core.model.datagokr.durproduct.productlist + + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class DurProductListResponse( + @SerialName("body") val body: Body = Body(), + @SerialName("header") val header: Header = Header(), +) { + @Serializable + data class Body( + @SerialName("items") val items: List = listOf(), + @SerialName("numOfRows") val numOfRows: Int = 0, // 15 + @SerialName("pageNo") val pageNo: Int = 0, // 1 + @SerialName("totalCount") val totalCount: Int = 0, // 1 + ) { + + /** + * @param barCode 표준코드 + * @param bizrNo 사업자등록번호 + * @param cancelDate 취소일자 + * @param cancelName 취소사유 + * @param changeDate 변경일자 + * @param chart 성상 + * @param classNo 분류번호 + * @param ediCode 보험코드 + * @param eeDocId 제조방법 + * @param entpName 업체명 + * @param etcOtcCode 전문일반 구분코드 + * @param insertFile 첨부파일 + * @param itemName 제품명 + * @param itemPermitDate 품목허가일자 + * @param itemSeq 품목기준코드 + * @param materialName 원료성분 + * @param nbDocId 주의사항 + * @param packUnit 포장단위 + * @param reexamDate 재심사기간 + * @param reexamTarget 재심사대상 + * @param storageMethod 저장방법 + * @param typeCode 유형코드 + * @param typeName DUR 유형 + * @param validTerm 유효기간 + */ + @Serializable + data class Item( + @SerialName("BAR_CODE") val barCode: String = "", // 8806421025729 + @SerialName("BIZRNO") val bizrNo: String = "", // 1188100601 + @SerialName("CANCEL_DATE") val cancelDate: String = "", // null + @SerialName("CANCEL_NAME") val cancelName: String = "", // 정상 + @SerialName("CHANGE_DATE") val changeDate: String = "", // 2019August26th + @SerialName("CHART") val chart: String = "", // 미황색의 원형 정제 + @SerialName("CLASS_NO") val classNo: String = "", // [141]항히스타민제 + @SerialName("EDI_CODE") val ediCode: String = "", // 642102570 + @SerialName("EE_DOC_ID") val eeDocId: String = "", // HTTPS://NEDRUG.MFDS.GO.KR/PBP/CMN/PDFVIEWER/196000011/EE + @SerialName("ENTP_NAME") val entpName: String = "", // (주)유한양행 + @SerialName("ETC_OTC_CODE") val etcOtcCode: String = "", // 일반의약품 + @SerialName("INSERT_FILE") val insertFile: String = "", // HTTP://WWW.HEALTH.KR/IMAGES/INSERT_PDF/In_A11A0450A0085_00.pdf + @SerialName("ITEM_NAME") val itemName: String = "", // 페니라민정(클로르페니라민말레산염) + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 1960October10th + @SerialName("ITEM_SEQ") val itemSeq: String = "", // 196000011 + @SerialName("MATERIAL_NAME") val materialName: String = "", // 클로르페니라민말레산염,,2.0,밀리그램,KP, + @SerialName("NB_DOC_ID") val nbDocId: String = "", // HTTPS://NEDRUG.MFDS.GO.KR/PBP/CMN/PDFVIEWER/196000011/NB + @SerialName("PACK_UNIT") val packUnit: String = "", // 1000정/병 + @SerialName("REEXAM_DATE") val reexamDate: String = "", // null + @SerialName("REEXAM_TARGET") val reexamTarget: String = "", // null + @SerialName("STORAGE_METHOD") val storageMethod: String = "", // 실온, 건소, 밀폐용기, + @SerialName("TYPE_CODE") val typeCode: String = "", // D,F,I + @SerialName("TYPE_NAME ") val typeName: String = "", // 용량주의,노인주의,첨가제주의 + @SerialName("VALID_TERM") val validTerm: String = "", // 제조일로부터 36 개월 + ) + } + + @Serializable + data class Header( + @SerialName("resultCode") val resultCode: String = "", // 00 + @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. + ) +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductElderlyCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductElderlyCautionResponse.kt new file mode 100644 index 000000000..00c792bfc --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductElderlyCautionResponse.kt @@ -0,0 +1,75 @@ +package com.android.mediproject.core.model.datagokr.durproduct.senior + + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class DurProductElderlyCautionResponse( + @SerialName("body") val body: Body = Body(), + @SerialName("header") val header: Header = Header(), +) { + @Serializable + data class Body( + @SerialName("items") val items: List = listOf(), + @SerialName("numOfRows") val numOfRows: Int = 0, // 15 + @SerialName("pageNo") val pageNo: Int = 0, // 1 + @SerialName("totalCount") val totalCount: Int = 0, // 5 + ) { + + /** + * @param changeDate 변경일자 + * @param chart 성상 + * @param entpName 업체명 + * @param itemName 제품명 + * @param itemPermitDate 품목허가일자 + * @param itemSeq 품목기준코드 + * @param typeName DUR 유형 + * @param className 약효분류 + * @param classCode 약효분류코드 + * @param etcOtcName 전문일반 구분명 + * @param formName 제형명 + * @param ingrCode 성분코드 + * @param ingrEngName 성분영문명 + * @param ingrName 성분명 + * @param mainIngr 주성분 + * @param mixIngr 복합제 + * @param mixType 복합제구분(단일/복합) + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param ingrEngNameFull 성분영문명(전체) + */ + @Serializable + data class Item( + @SerialName("CHANGE_DATE") val changeDate: String = "", // 20221201 + @SerialName("CHART") val chart: String = "", // 청색의 원형 필름코팅정 + @SerialName("CLASS_CODE") val classCode: String = "", // 01170 + @SerialName("CLASS_NAME") val className: String = "", // 정신신경용제 + @SerialName("ENTP_NAME") val entpName: String = "", // 환인제약(주) + @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 전문의약품 + @SerialName("FORM_NAME") val formName: String = "", // 필름코팅정 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000809 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Amitriptyline + @SerialName("INGR_ENG_NAME_FULL") val ingrEngNameFull: String = "", // Amitriptyline(아미트리프틸린) + @SerialName("INGR_NAME") val ingrName: String = "", // 아미트리프틸린 + @SerialName("ITEM_NAME") val itemName: String = "", // 에나폰정10밀리그램(아미트리프틸린염산염) + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 19700220 + @SerialName("ITEM_SEQ") val itemSeq: String = "", // 197000079 + @SerialName("MAIN_INGR") val mainIngr: String = "", // [M223101]아미트리프틸린염산염 + @SerialName("MIX_INGR") val mixIngr: String = "", // [M223101]아미트리프틸린염산염 + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20150728 + @SerialName("PROHBT_CONTENT") + val prohibitContent: String = "", // 노인에서의 삼환계 항우울제 사용은 기립성 저혈압, 비틀거림, 항콜린작용에 의한 구갈, 배뇨곤란, 변비, 안내압항진 등이 나타나기 쉬움으로 소량으로 신중투여 + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_NAME") val typeName: String = "", // 노인주의 + ) + } + + @Serializable + data class Header( + @SerialName("resultCode") val resultCode: String = "", // 00 + @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. + ) +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTabooResponse.kt new file mode 100644 index 000000000..98867bcfe --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTabooResponse.kt @@ -0,0 +1,74 @@ +package com.android.mediproject.core.model.datagokr.durproduct.specialtyagegroup + + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class DurProductSpecialtyAgeGroupTabooResponse( + @SerialName("body") val body: Body = Body(), + @SerialName("header") val header: Header = Header(), +) { + @Serializable + data class Body( + @SerialName("items") val items: List = listOf(), + @SerialName("numOfRows") val numOfRows: Int = 0, // 3 + @SerialName("pageNo") val pageNo: Int = 0, // 1 + @SerialName("totalCount") val totalCount: Int = 0, // 1 + ) { + /** + * @param changeDate 변경일자 + * @param chart 성상 + * @param classCode 약효분류코드 + * @param className 약효분류 + * @param entpName 업체명 + * @param etcOtcName 전문일반 구분명 + * @param formName 제형명 + * @param ingrCode 성분코드 + * @param ingrEngName 성분영문명 + * @param ingrEngNameFull 성분영문명(전체) + * @param ingrName 성분명 + * @param itemName 제품명 + * @param itemPermitDate 품목허가일자 + * @param itemSeq 품목기준코드 + * @param mainIngr 주성분 + * @param mixIngr 복합제 + * @param mixType 복합제구분(단일/복합) + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param typeName DUR유형 + */ + @Serializable + data class Item( + @SerialName("CHANGE_DATE") val changeDate: String = "", // 20200313 + @SerialName("CHART") val chart: String = "", // 황색의 결정 또는 결정성 가루가 들어 있는 상부는 갈색, 하부는 담회색의 캅셀이다. + @SerialName("CLASS_CODE") val classCode: String = "", // 06150 + @SerialName("CLASS_NAME") val className: String = "", // 주로 그람양성, 음성균, 리케치아, 비루스에 작용하는 것 + @SerialName("ENTP_NAME") val entpName: String = "", // (주)종근당 + @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 전문의약품 + @SerialName("FORM_NAME") val formName: String = "", // 경질캡슐제, 산제 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000064 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Tetracycline Hydrochloride + @SerialName("INGR_ENG_NAME_FULL") val ingrEngNameFull: String = "", // Tetracycline Hydrochloride(테트라사이클린염산염) + @SerialName("INGR_NAME") val ingrName: String = "", // 테트라사이클린염산염 + @SerialName("ITEM_NAME") val itemName: String = "", // 테라싸이클린캅셀250밀리그람(염산테트라싸이클린) + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 19600614 + @SerialName("ITEM_SEQ") val itemSeq: String = "", // 196000001 + @SerialName("MAIN_INGR") val mainIngr: String = "", // [M223235]테트라사이클린염산염 + @SerialName("MIX_INGR") val mixIngr: String = "", // null + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20140109 + @SerialName("PROHBT_CONTENT") + val prohibitContent: String = "", // 소아 등(특히 치아 형성기인 12세 미만의 소아)에 투여 시, 치아의 착색?법랑질 형성 부전, 또는 일과성 골발육 부전을 일으킬 수 있음 + @SerialName("REMARK") val remark: String = "", // 다만, 다른 약을 사용할 수 없거나 효과가 없는 경우에만 8세 이상 신중투여 + @SerialName("TYPE_NAME") val typeName: String = "", // 특정연령대금기 + ) + } + + @Serializable + data class Header( + @SerialName("resultCode") val resultCode: String = "", // 00 + @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. + ) +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListItemDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListItemDto.kt index ac9fdc15e..d19a017ce 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListItemDto.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListItemDto.kt @@ -37,7 +37,7 @@ data class AdminActionListItemDto( val itemSeq: String, // 200808451 val lastSettleDate: LocalDate, // 20230526 val publicEndDate: LocalDate, // 20230910 - var onClick: (() -> Unit)? = null + var onClick: (() -> Unit)? = null, ) : Parcelable fun AdminActionListResponse.Body.Item.toDto(): AdminActionListItemDto { @@ -46,16 +46,16 @@ fun AdminActionListResponse.Body.Item.toDto(): AdminActionListItemDto { disposition = aDMDISPSNAME, enforcementNumber = aDMDISPSSEQ, applyLaw = bEFAPPLYLAW, - bizrNo = bIZRNO ?: "", - entpName = eNTPNAME, + bizrNo = bizrNo ?: "", + entpName = entpName, entpNo = eNTPNO, violation = eXPOSECONT, - itemName = iTEMNAME ?: "", - itemSeq = iTEMSEQ ?: "", + itemName = itemName ?: "", + itemSeq = itemSeq ?: "", lastSettleDate = LocalDate.parse(lASTSETTLEDATE, dateFormatter), - publicEndDate = LocalDate.parse(rLSENDDATE, dateFormatter) + publicEndDate = LocalDate.parse(rLSENDDATE, dateFormatter), - ) + ) } -private val dateFormatter by lazy { DateTimeFormatter.ofPattern("yyyyMMdd") } \ No newline at end of file +private val dateFormatter by lazy { DateTimeFormatter.ofPattern("yyyyMMdd") } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListResponse.kt index 159b39301..d9af4ab00 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListResponse.kt @@ -20,7 +20,7 @@ data class AdminActionListResponse( @SerialName("items") val items: List, @SerialName("numOfRows") val numOfRows: Int, // 15 @SerialName("pageNo") val pageNo: Int, // 1 - @SerialName("totalCount") val totalCount: Int // 392 + @SerialName("totalCount") val totalCount: Int, // 392 ) { /** * 행정처분 목록 별 데이터 클래스 @@ -29,10 +29,10 @@ data class AdminActionListResponse( * @property aDMDISPSNAME 처분사항 * @property aDMDISPSSEQ 행정처분 일련번호 * @property bEFAPPLYLAW 근거법령 - * @property bIZRNO 사업자등록번호 - * @property eNTPNAME 업체명 - * @property iTEMSEQ 품목 일련번호 - * @property iTEMNAME 품목명 + * @property bizrNo 사업자등록번호 + * @property entpName 업체명 + * @property itemSeq 품목 일련번호 + * @property itemName 품목명 * @property eNTPNO 업체번호 * @property lASTSETTLEDATE 처분 일자 * @property rLSENDDATE 공개 종료 일자 @@ -47,16 +47,16 @@ data class AdminActionListResponse( @SerialName("ADM_DISPS_SEQ") val aDMDISPSSEQ: String, // 2023003342 @SerialName("BEF_APPLY_LAW") val bEFAPPLYLAW: String, // ○「약사법」제38조제1항,「의약품 등의 안전에 관한 규칙」제48조제15호,「의약품 소량포장단위 공급에 관한 규정(식품의약품안전처 고시)」 ○「약사법」제76조제1항제3호 및 제3항,「의약품 등의 안전에 관한 규칙」제95조 관련 [별표 8] “행정처분의 기준” Ⅱ. 개별기준 제25호마목 - @SerialName("BIZRNO") val bIZRNO: String?, // 2208114465 - @SerialName("ENTP_NAME") val eNTPNAME: String, // 한국오츠카제약(주) + @SerialName("BIZRNO") val bizrNo: String?, // 2208114465 + @SerialName("ENTP_NAME") val entpName: String, // 한국오츠카제약(주) @SerialName("ENTP_NO") val eNTPNO: String, // 19830009 @SerialName("EXPOSE_CONT") val eXPOSECONT: String, // ○ 2021년도 의약품 소량포장단위 공급기준 미준수 - @SerialName("ITEM_NAME") val iTEMNAME: String?, // 아빌리파이정2밀리그램(아리피프라졸) - @SerialName("ITEM_SEQ") val iTEMSEQ: String?, // 200808451 + @SerialName("ITEM_NAME") val itemName: String?, // 아빌리파이정2밀리그램(아리피프라졸) + @SerialName("ITEM_SEQ") val itemSeq: String?, // 200808451 @SerialName("LAST_SETTLE_DATE") val lASTSETTLEDATE: String, // 20230526 - @SerialName("RLS_END_DATE") val rLSENDDATE: String // 20230910 + @SerialName("RLS_END_DATE") val rLSENDDATE: String, // 20230910 ) } -} \ No newline at end of file +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/dur/DurItemDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/remote/dur/DurItemDto.kt deleted file mode 100644 index fe2cfe869..000000000 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/dur/DurItemDto.kt +++ /dev/null @@ -1,85 +0,0 @@ -package com.android.mediproject.core.model.remote.dur - - -/** - * @param barCode 바코드 - * @param bizRno 사업자등록번호 - * @param cancelDate 취소일 - * @param cancelName 취소명 - * @param changeDate 변경일 - * @param chart 차트 - * @param classNo 클래스 번호 - * @param ediCode EDI 코드 - * @param eeDocId EE 문서 ID - * @param entpName 기업 이름 - * @param etcOtcCode 기타 OTC 코드 - * @param insertFile 삽입 파일 - * @param itemName 아이템 이름 - * @param itemPermitDate 아이템 허가 날짜 - * @param itemSeq 아이템 순서 - * @param materialName 재료 이름 - * @param nbDocId NB 문서 ID - * @param packUnit 패키지 단위 - * @param reexamDate 재검사 날짜 - * @param reexamTarget 재검사 대상 - * @param storageMethod 저장 방법 - * @param typeCode 유형 코드 - * @param typeName 유형 이름 - * @param udDocId UD 문서 ID - * @param validTerm 유효 기간 - */ -data class DurItemDto( - val barCode: String, // 8806421025729 - val bizRno: String, // 1188100601 - val cancelDate: String?, // null - val cancelName: String?, // 정상 - val changeDate: String?, // 2019August26th - val chart: String, // 미황색의 원형 정제 - val classNo: String, // [141]항히스타민제 - val ediCode: String?, // 642102570 - val eeDocId: String?, // HTTPS://NEDRUG.MFDS.GO.KR/PBP/CMN/PDFVIEWER/196000011/EE - val entpName: String, // (주)유한양행 - val etcOtcCode: String, // 일반의약품 - val insertFile: String?, // HTTP://WWW.HEALTH.KR/IMAGES/INSERT_PDF/In_A11A0450A0085_00.pdf - val itemName: String, // 페니라민정(클로르페니라민말레산염) - val itemPermitDate: String, // 1960October10th - val itemSeq: String, // 196000011 - val materialName: String, // 클로르페니라민말레산염,,2.0,밀리그램,KP, - val nbDocId: String?, // HTTPS://NEDRUG.MFDS.GO.KR/PBP/CMN/PDFVIEWER/196000011/NB - val packUnit: String?, // 1000정/병 - val reexamDate: String?, // null - val reexamTarget: String?, // null - val storageMethod: String?, // 실온, 건소, 밀폐용기, - val typeCode: String?, // D,F,I - val typeName: String?, // 용량주의,노인주의,첨가제주의 - val udDocId: String?, // HTTPS://NEDRUG.MFDS.GO.KR/PBP/CMN/PDFVIEWER/196000011/UD - val validTerm: String? // 제조일로부터 36 개월 -) - -fun DurResponse.Body.Item.toDto() = DurItemDto( - barCode = barCode ?: "", - bizRno = bizRno ?: "", - cancelDate = cancelDate, - cancelName = cancelName, - changeDate = changeDate, - chart = chart ?: "", - classNo = classNo ?: "", - ediCode = ediCode, - eeDocId = eeDocId, - entpName = entpName ?: "", - etcOtcCode = etcOtcCode ?: "", - insertFile = insertFile, - itemName = itemName ?: "", - itemPermitDate = itemPermitDate ?: "", - itemSeq = itemSeq ?: "", - materialName = materialName ?: "", - nbDocId = nbDocId, - packUnit = packUnit, - reexamDate = reexamDate, - reexamTarget = reexamTarget, - storageMethod = storageMethod, - typeCode = typeCode, - typeName = typeName, - udDocId = udDocId, - validTerm = validTerm -) \ No newline at end of file diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/dur/DurResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/remote/dur/DurResponse.kt deleted file mode 100644 index 2aaf0537a..000000000 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/dur/DurResponse.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.android.mediproject.core.model.remote.dur - - -import com.android.mediproject.core.model.DataGoKrBaseResponse -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class DurResponse( - @SerialName("body") val body: Body, -) : DataGoKrBaseResponse() { - @Serializable - data class Body( - @SerialName("items") val items: List, @SerialName("numOfRows") val numOfRows: Int, // 15 - @SerialName("pageNo") val pageNo: Int, // 1 - @SerialName("totalCount") val totalCount: Int // 1 - ) { - /** - * @param barCode 바코드 - * @param bizRno 사업자등록번호 - * @param cancelDate 취소일 - * @param cancelName 취소명 - * @param changeDate 변경일 - * @param chart 차트 - * @param classNo 클래스 번호 - * @param ediCode EDI 코드 - * @param eeDocId EE 문서 ID - * @param entpName 기업 이름 - * @param etcOtcCode 기타 OTC 코드 - * @param insertFile 삽입 파일 - * @param itemName 아이템 이름 - * @param itemPermitDate 아이템 허가 날짜 - * @param itemSeq 아이템 순서 - * @param materialName 재료 이름 - * @param nbDocId NB 문서 ID - * @param packUnit 패키지 단위 - * @param reexamDate 재검사 날짜 - * @param reexamTarget 재검사 대상 - * @param storageMethod 저장 방법 - * @param typeCode 유형 코드 - * @param typeName 유형 이름 - * @param udDocId UD 문서 ID - * @param validTerm 유효 기간 - */ - @Serializable - data class Item( - @SerialName("BAR_CODE") val barCode: String?, // 8806421025729 - @SerialName("BIZRNO") val bizRno: String?, // 1188100601 - @SerialName("CANCEL_DATE") val cancelDate: String?, // null - @SerialName("CANCEL_NAME") val cancelName: String?, // 정상 - @SerialName("CHANGE_DATE") val changeDate: String?, // 2019August26th - @SerialName("CHART") val chart: String?, // 미황색의 원형 정제 - @SerialName("CLASS_NO") val classNo: String?, // [141]항히스타민제 - @SerialName("EDI_CODE") val ediCode: String?, // 642102570 - @SerialName("EE_DOC_ID") val eeDocId: String?, // HTTPS://NEDRUG.MFDS.GO.KR/PBP/CMN/PDFVIEWER/196000011/EE - @SerialName("ENTP_NAME") val entpName: String?, // (주)유한양행 - @SerialName("ETC_OTC_CODE") val etcOtcCode: String?, // 일반의약품 - @SerialName("INSERT_FILE") val insertFile: String?, // HTTP://WWW.HEALTH.KR/IMAGES/INSERT_PDF/In_A11A0450A0085_00.pdf - @SerialName("ITEM_NAME") val itemName: String?, // 페니라민정(클로르페니라민말레산염) - @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String?, // 1960October10th - @SerialName("ITEM_SEQ") val itemSeq: String?, // 196000011 - @SerialName("MATERIAL_NAME") val materialName: String?, // 클로르페니라민말레산염,,2.0,밀리그램,KP, - @SerialName("NB_DOC_ID") val nbDocId: String?, // HTTPS://NEDRUG.MFDS.GO.KR/PBP/CMN/PDFVIEWER/196000011/NB - @SerialName("PACK_UNIT") val packUnit: String?, // 1000정/병 - @SerialName("REEXAM_DATE") val reexamDate: String?, // null - @SerialName("REEXAM_TARGET") val reexamTarget: String?, // null - @SerialName("STORAGE_METHOD") val storageMethod: String?, // 실온, 건소, 밀폐용기, - @SerialName("TYPE_CODE") val typeCode: String?, // D,F,I - @SerialName("TYPE_NAME ") val typeName: String?, // 용량주의,노인주의,첨가제주의 - @SerialName("UD_DOC_ID") val udDocId: String?, // HTTPS://NEDRUG.MFDS.GO.KR/PBP/CMN/PDFVIEWER/196000011/UD - @SerialName("VALID_TERM") val validTerm: String? // 제조일로부터 36 개월 - ) - } - -} \ No newline at end of file diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/elderlycaution/ElderlyCautionDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/remote/elderlycaution/ElderlyCautionDto.kt deleted file mode 100644 index ba53cff5c..000000000 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/elderlycaution/ElderlyCautionDto.kt +++ /dev/null @@ -1,77 +0,0 @@ -package com.android.mediproject.core.model.remote.elderlycaution - -import com.android.mediproject.core.toLocalDate -import java.time.LocalDate - -/** - * 노인안전정보 - * - * @param changeDate 변경일자 - * @param chart 모양 - * @param classCode 분류코드 - * @param className 분류명 - * @param entpName 업체명 - * @param etcOtcName 구분 - * @param formName 제형 - * @param ingrCode 성분코드 - * @param ingrEngName 성분영문명 - * @param ingrEngNameFull 성분영문명(전체) - * @param ingrName 성분명 - * @param itemName 품목명 - * @param itemSeq 품목일련번호 - * @param itemPermitDate 허가일자 - * @param mainIngr 성분내용 - * @param minIngr 성분내용 - * @param mixType 성분유형 - * @param notificationDate 통지일자 - * @param prohibitionContent 금기내용 - * @param remark 비고 - * @param typeName 유형 - */ -data class ElderlyCautionDto( - val changeDate: LocalDate?, // 20221201 - val chart: String, // 청색의 원형 필름코팅정 - val classCode: String, // 01170 - val className: String, // 정신신경용제 - val entpName: String, // 환인제약(주) - val etcOtcName: String, // 전문의약품 - val formName: String, // 필름코팅정 - val ingrCode: String, // D000809 - val ingrEngName: String, // Amitriptyline - val ingrEngNameFull: String, // Amitriptyline(아미트리프틸린) - val ingrName: String, // 아미트리프틸린 - val itemName: String, // 에나폰정10밀리그램(아미트리프틸린염산염) - val itemPermitDate: LocalDate?, // 19700220 - val itemSeq: String, // 197000079 - val mainIngr: String, // [M223101]아미트리프틸린염산염 - val minIngr: String, // [M223101]아미트리프틸린염산염 - val mixType: String, // 단일 - val notificationDate: LocalDate?, // 20150728 - val prohibitionContent: String, // 노인에서의 삼환계 항우울제 사용은 기립성 저혈압, 비틀거림, 항콜린작용에 의한 구갈, 배뇨곤란, 변비, 안내압항진 등이 나타나기 쉬움으로 소량으로 신중투여 - val remark: String?, // null - val typeName: String, // 노인주의 -) - -fun ElderlyCautionResponse.Body.Item.toElderlyCautionDto() = ElderlyCautionDto( - changeDate = changeDate.toLocalDate("yyyyMMdd"), - chart = cHART, - classCode = cLASSCODE, - className = className, - entpName = entpName, - etcOtcName = etcOtcName, - formName = formName, - ingrCode = ingrCode, - ingrEngName = ingrEngName, - ingrEngNameFull = iNGRENGNAMEFULL, - ingrName = ingrKorName, - itemName = iTEMNAME, - itemPermitDate = iTEMPERMITDATE.toLocalDate("yyyyMMdd"), - itemSeq = iTEMSEQ, - mainIngr = mAININGR, - minIngr = mixIngr, - mixType = mixType, - notificationDate = notificationDate.toLocalDate("yyyyMMdd"), - prohibitionContent = prohibitContent, - remark = remark, - typeName = typeName, -) diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/elderlycaution/ElderlyCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/remote/elderlycaution/ElderlyCautionResponse.kt deleted file mode 100644 index a0d7c14a5..000000000 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/elderlycaution/ElderlyCautionResponse.kt +++ /dev/null @@ -1,71 +0,0 @@ -package com.android.mediproject.core.model.remote.elderlycaution - - -import com.android.mediproject.core.model.DataGoKrBaseResponse -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class ElderlyCautionResponse( - @SerialName("body") val body: Body, -) : DataGoKrBaseResponse() { - @Serializable - data class Body( - @SerialName("items") val items: List, - @SerialName("numOfRows") val numOfRows: Int, // 15 - @SerialName("pageNo") val pageNo: Int, // 1 - @SerialName("totalCount") val totalCount: Int, // 1 - ) { - /** - * 노인안전정보 - * - * @param changeDate 변경일자 - * @param cHART 모양 - * @param cLASSCODE 분류코드 - * @param className 분류명 - * @param entpName 업체명 - * @param etcOtcName 구분 - * @param formName 제형 - * @param ingrCode 성분코드 - * @param ingrEngName 성분영문명 - * @param iNGRENGNAMEFULL 성분영문명(전체) - * @param ingrKorName 성분명 - * @param iTEMNAME 품목명 - * @param iTEMSEQ 품목일련번호 - * @param iTEMPERMITDATE 허가일자 - * @param mAININGR 성분내용 - * @param mixIngr 성분내용 - * @param mixType 성분유형 - * @param notificationDate 통지일자 - * @param prohibitContent 금기내용 - * @param remark 비고 - * @param typeName 유형 - */ - @Serializable - data class Item( - @SerialName("CHANGE_DATE") val changeDate: String, // 20221201 - @SerialName("CHART") val cHART: String, // 청색의 원형 필름코팅정 - @SerialName("CLASS_CODE") val cLASSCODE: String, // 01170 - @SerialName("CLASS_NAME") val className: String, // 정신신경용제 - @SerialName("ENTP_NAME") val entpName: String, // 환인제약(주) - @SerialName("ETC_OTC_NAME") val etcOtcName: String, // 전문의약품 - @SerialName("FORM_NAME") val formName: String, // 필름코팅정 - @SerialName("INGR_CODE") val ingrCode: String, // D000809 - @SerialName("INGR_ENG_NAME") val ingrEngName: String, // Amitriptyline - @SerialName("INGR_ENG_NAME_FULL") val iNGRENGNAMEFULL: String, // Amitriptyline(아미트리프틸린) - @SerialName("INGR_NAME") val ingrKorName: String, // 아미트리프틸린 - @SerialName("ITEM_NAME") val iTEMNAME: String, // 에나폰정10밀리그램(아미트리프틸린염산염) - @SerialName("ITEM_PERMIT_DATE") val iTEMPERMITDATE: String, // 19700220 - @SerialName("ITEM_SEQ") val iTEMSEQ: String, // 197000079 - @SerialName("MAIN_INGR") val mAININGR: String, // [M223101]아미트리프틸린염산염 - @SerialName("MIX_INGR") val mixIngr: String, // [M223101]아미트리프틸린염산염 - @SerialName("MIX_TYPE") val mixType: String, // 단일 - @SerialName("NOTIFICATION_DATE") val notificationDate: String, // 20150728 - @SerialName("PROHBT_CONTENT") - val prohibitContent: String, // 노인에서의 삼환계 항우울제 사용은 기립성 저혈압, 비틀거림, 항콜린작용에 의한 구갈, 배뇨곤란, 변비, 안내압항진 등이 나타나기 쉬움으로 소량으로 신중투여 - @SerialName("REMARK") val remark: String?, // null - @SerialName("TYPE_NAME") val typeName: String, // 노인주의 - ) - } - -} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspensionItemDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspensionItemDto.kt index bb1ccdd5f..0aee0ef8a 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspensionItemDto.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspensionItemDto.kt @@ -7,7 +7,7 @@ import java.time.format.DateTimeFormatter /** * 상세 리콜 폐기 데이터 * - * @property bIZRNO 사업자등록번호 + * @property bizrNo 사업자등록번호 * @property enterprise 업체명 * @property enterpriseAddress 업체 주소 * @property enterpriseTel 업체 전화번호 @@ -24,7 +24,7 @@ import java.time.format.DateTimeFormatter * */ data class DetailRecallSuspensionItemDto( - val bIZRNO: String, // 1278641862 + val bizrNo: String, // 1278641862 val enterprise: String, // (주)자연세상 val enterpriseAddress: String, // 경기도 포천시 소흘읍 호국로481번길 21-16 val enterpriseTel: String, // 0315443091 @@ -41,7 +41,7 @@ data class DetailRecallSuspensionItemDto( ) fun DetailRecallSuspensionResponse.Body.Item.Item.toRecallSuspensionItemDto(): DetailRecallSuspensionItemDto = DetailRecallSuspensionItemDto( - bIZRNO = bIZRNO ?: "", + bizrNo = bizrNo ?: "", enterprise = eNTRPS ?: "", enterpriseAddress = eNTRPSADRES ?: "", enterpriseTel = eNTRPSTELNO ?: "", diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspensionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspensionResponse.kt index bb051e9c7..706358a2b 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspensionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspensionResponse.kt @@ -23,17 +23,17 @@ data class DetailRecallSuspensionResponse( @SerialName("items") val items: List, @SerialName("numOfRows") val numOfRows: Int, // 15 @SerialName("pageNo") val pageNo: Int, // 1 - @SerialName("totalCount") val totalCount: Int // 1 + @SerialName("totalCount") val totalCount: Int, // 1 ) { @Serializable data class Item( - @SerialName("item") val item: Item + @SerialName("item") val item: Item, ) { /** * 상세 리콜 폐기 데이터 * - * @property bIZRNO 사업자등록번호 + * @property bizrNo 사업자등록번호 * @property eNTRPS 업체명 * @property eNTRPSADRES 업체 주소 * @property eNTRPSTELNO 업체 전화번호 @@ -51,7 +51,7 @@ data class DetailRecallSuspensionResponse( */ @Serializable data class Item( - @SerialName("BIZRNO") val bIZRNO: String?, // 1278641862 + @SerialName("BIZRNO") val bizrNo: String?, // 1278641862 @SerialName("ENTRPS") val eNTRPS: String?, // (주)자연세상 @SerialName("ENTRPS_ADRES") val eNTRPSADRES: String?, // 경기도 포천시 소흘읍 호국로481번길 21-16 @SerialName("ENTRPS_TELNO") val eNTRPSTELNO: String?, // 0315443091 @@ -64,10 +64,10 @@ data class DetailRecallSuspensionResponse( @SerialName("RM") val rM: String?, // null @SerialName("RTRVL_CMMND_DT") val approvalDate: String?, // 20221004000000 @SerialName("RTRVL_RESN") val retrievalReason: String?, // 정량법 부적합 - @SerialName("USGPD") val usagePeriod: String? // 제조일로부터36개월 + @SerialName("USGPD") val usagePeriod: String?, // 제조일로부터36개월 ) } } -} \ No newline at end of file +} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurDataSource.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurDataSource.kt index 01be0f656..286edaa60 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurDataSource.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurDataSource.kt @@ -1,6 +1,5 @@ package com.android.mediproject.core.network.datasource.dur -import com.android.mediproject.core.model.remote.dur.DurResponse import kotlinx.coroutines.flow.Flow import retrofit2.http.Query diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/elderlycaution/ElderlyCautionDataSource.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/elderlycaution/ElderlyCautionDataSource.kt index 8927fe100..0dac6041b 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/elderlycaution/ElderlyCautionDataSource.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/elderlycaution/ElderlyCautionDataSource.kt @@ -1,6 +1,5 @@ package com.android.mediproject.core.network.datasource.elderlycaution -import com.android.mediproject.core.model.remote.elderlycaution.ElderlyCautionResponse import retrofit2.http.Query interface ElderlyCautionDataSource { @@ -14,5 +13,5 @@ interface ElderlyCautionDataSource { suspend fun getElderlyCaution( @Query("itemName") itemName: String?, @Query("itemSeq") itemSeq: String?, - ): Result -} \ No newline at end of file + ): Result +} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/elderlycaution/ElderlyCautionDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/elderlycaution/ElderlyCautionDataSourceImpl.kt index 58a538fc4..291f9cc30 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/elderlycaution/ElderlyCautionDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/elderlycaution/ElderlyCautionDataSourceImpl.kt @@ -1,6 +1,5 @@ package com.android.mediproject.core.network.datasource.elderlycaution -import com.android.mediproject.core.model.remote.elderlycaution.ElderlyCautionResponse import com.android.mediproject.core.model.toResult import com.android.mediproject.core.network.module.DataGoKrNetworkApi import com.android.mediproject.core.network.onResponse @@ -9,7 +8,7 @@ import javax.inject.Inject class ElderlyCautionDataSourceImpl @Inject constructor(private val dataGoKrNetworkApi: DataGoKrNetworkApi) : ElderlyCautionDataSource { - override suspend fun getElderlyCaution(itemName: String?, itemSeq: String?): Result = + override suspend fun getElderlyCaution(itemName: String?, itemSeq: String?): Result = dataGoKrNetworkApi.getElderlyCaution(itemName = itemName, _itemSeq = itemSeq).onResponse().fold( onSuccess = { response -> response.toResult() diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurProductInfoNetworkApi.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurProductInfoNetworkApi.kt index c80401fe2..b72f9810f 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurProductInfoNetworkApi.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurProductInfoNetworkApi.kt @@ -4,8 +4,7 @@ import com.android.mediproject.core.common.BuildConfig import com.android.mediproject.core.common.DATA_GO_KR_DEFAULT_PAGE_NO import com.android.mediproject.core.common.DATA_GO_KR_DEFAULT_ROW_SIZE import com.android.mediproject.core.common.JSON -import com.android.mediproject.core.model.remote.dur.DurResponse -import com.android.mediproject.core.model.remote.elderlycaution.ElderlyCautionResponse +import com.android.mediproject.core.model.datagokr.durproduct.senior.DurProductElderlyCautionResponse import retrofit2.Response import retrofit2.http.GET import retrofit2.http.Query @@ -26,7 +25,7 @@ interface DurProductInfoNetworkApi { * */ @GET(value = "DURPrdlstInfoService02/getDurPrdlstInfoList2") - suspend fun getDur( + suspend fun getDurProductList( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, @Query("itemName") itemName: String?, @@ -54,7 +53,7 @@ interface DurProductInfoNetworkApi { @Query("itemSeq") itemSeq: String?, @Query("type") type: String = JSON, @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, - ): Response + ): Response /** * 서방정 분할 주의 정보 조회 @@ -65,7 +64,7 @@ interface DurProductInfoNetworkApi { * @param itemSeq 품목기준코드 */ @GET(value = "DURPrdlstInfoService02/getSeobangjeongPartitnAtentInfoList2") - suspend fun getSustainedReleaseTableSplitAttentionInfo( + suspend fun getExReleaseTableSplitAttentionInfo( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, @Query("itemName") itemName: String?, diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicineSafeUsageViewModel.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicineSafeUsageViewModel.kt index 8a4272512..5ba38d7dc 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicineSafeUsageViewModel.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicineSafeUsageViewModel.kt @@ -6,8 +6,8 @@ import com.android.mediproject.core.common.network.MediDispatchers import com.android.mediproject.core.common.viewmodel.UiState import com.android.mediproject.core.domain.GetDurUseCase import com.android.mediproject.core.domain.GetElderlyCautionUseCase -import com.android.mediproject.core.model.remote.dur.DurItemDto -import com.android.mediproject.core.model.remote.elderlycaution.ElderlyCautionDto +import com.android.mediproject.core.model.datagokr.durproduct.productlist.DurItemDto +import com.android.mediproject.core.model.datagokr.durproduct.senior.ElderlyCautionDto import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineDispatcher @@ -21,7 +21,7 @@ import javax.inject.Inject class MedicineSafeUsageViewModel @Inject constructor( private val getElderlyCautionUseCase: GetElderlyCautionUseCase, private val getDurUseCase: GetDurUseCase, - @Dispatcher(MediDispatchers.Default) private val defaultDispatcher: CoroutineDispatcher + @Dispatcher(MediDispatchers.Default) private val defaultDispatcher: CoroutineDispatcher, ) : BaseViewModel() { private val _elderlyCaution = MutableStateFlow(null) @@ -34,16 +34,19 @@ class MedicineSafeUsageViewModel @Inject constructor( fun loadDur( - itemName: String?, itemSeq: String? + itemName: String?, itemSeq: String?, ) = viewModelScope.launch { getDurUseCase.invoke(itemName, itemSeq).map { result -> - result.fold(onSuccess = { - _dur.value = UiState.Success(it) - }, onFailure = { - _dur.value = UiState.Error(it.message ?: "failed") - }) + result.fold( + onSuccess = { + _dur.value = UiState.Success(it) + }, + onFailure = { + _dur.value = UiState.Error(it.message ?: "failed") + }, + ) } } -} \ No newline at end of file +} From f0061071a50f30e80799f1d22b7ed9bbd46bc17a Mon Sep 17 00:00:00 2001 From: JSPark <48265129+pknujsp@users.noreply.github.com> Date: Wed, 26 Jul 2023 18:41:28 +0900 Subject: [PATCH 04/13] =?UTF-8?q?#193=20DUR=20=EC=84=B1=EB=B6=84/=ED=92=88?= =?UTF-8?q?=EB=AA=A9=20=EC=A0=95=EB=B3=B4=20=EC=B2=98=EB=A6=AC=ED=95=98?= =?UTF-8?q?=EB=8A=94=20DataSource=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/data/remote/di/RepositoryModule.kt | 4 +- .../core/data/remote/dur/DurRepositoryImpl.kt | 6 +- ...nse.kt => DurIngrSeniorCautionResponse.kt} | 2 +- ....kt => DurProductSeniorCautionResponse.kt} | 2 +- .../network/datasource/dur/DurDataSource.kt | 11 --- .../datasource/dur/DurDataSourceImpl.kt | 25 ------ .../datasource/dur/DurIngrDataSource.kt | 47 ++++++++++ .../datasource/dur/DurIngrDataSourceImpl.kt | 44 +++++++++ .../datasource/dur/DurProductDataSource.kt | 73 +++++++++++++++ .../dur/DurProductDataSourceImpl.kt | 90 +++++++++++++++++++ .../ElderlyCautionDataSource.kt | 17 ---- .../ElderlyCautionDataSourceImpl.kt | 21 ----- .../GranuleIdentificationDataSourceImpl.kt | 1 + .../adminaction/AdminActionDataSourceImpl.kt | 1 + .../core/network/module/DataGoKrNetwork.kt | 27 +++--- .../module/datagokr/DataGoKrNetworkApi.kt | 3 +- .../module/datagokr/DurIngrInfoNetworkApi.kt | 23 +++-- .../datagokr/DurProductInfoNetworkApi.kt | 30 ++++--- 18 files changed, 312 insertions(+), 115 deletions(-) rename core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/{DurIngrElderlyCautionResponse.kt => DurIngrSeniorCautionResponse.kt} (98%) rename core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/{DurProductElderlyCautionResponse.kt => DurProductSeniorCautionResponse.kt} (98%) delete mode 100644 core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurDataSource.kt delete mode 100644 core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurDataSourceImpl.kt create mode 100644 core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurIngrDataSource.kt create mode 100644 core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurIngrDataSourceImpl.kt create mode 100644 core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSource.kt create mode 100644 core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt delete mode 100644 core/network/src/main/java/com/android/mediproject/core/network/datasource/elderlycaution/ElderlyCautionDataSource.kt delete mode 100644 core/network/src/main/java/com/android/mediproject/core/network/datasource/elderlycaution/ElderlyCautionDataSourceImpl.kt diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/di/RepositoryModule.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/di/RepositoryModule.kt index a05851322..1d6bdda97 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/di/RepositoryModule.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/remote/di/RepositoryModule.kt @@ -34,7 +34,7 @@ import com.android.mediproject.core.database.cache.manager.MedicineDataCacheMana import com.android.mediproject.core.database.searchhistory.SearchHistoryDao import com.android.mediproject.core.datastore.AppDataStore import com.android.mediproject.core.network.datasource.comments.CommentsDataSource -import com.android.mediproject.core.network.datasource.dur.DurDataSource +import com.android.mediproject.core.network.datasource.dur.DurProductDataSource import com.android.mediproject.core.network.datasource.elderlycaution.ElderlyCautionDataSource import com.android.mediproject.core.network.datasource.favoritemedicine.FavoriteMedicineDataSource import com.android.mediproject.core.network.datasource.granule.GranuleIdentificationDataSource @@ -105,7 +105,7 @@ object RepositoryModule { @Provides @Singleton - fun providesDurRepository(durDataSource: DurDataSource): DurRepository = DurRepositoryImpl(durDataSource) + fun providesDurRepository(durProductDataSource: DurProductDataSource): DurRepository = DurRepositoryImpl(durProductDataSource) @Provides diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/dur/DurRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/dur/DurRepositoryImpl.kt index b94196a7e..f23455aa0 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/dur/DurRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/remote/dur/DurRepositoryImpl.kt @@ -1,13 +1,13 @@ package com.android.mediproject.core.data.remote.dur -import com.android.mediproject.core.network.datasource.dur.DurDataSource +import com.android.mediproject.core.network.datasource.dur.DurProductDataSource import kotlinx.coroutines.flow.channelFlow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.map import javax.inject.Inject class DurRepositoryImpl @Inject constructor( - private val dataSource: DurDataSource + private val dataSource: DurProductDataSource, ) : DurRepository { override suspend fun getDur(itemName: String?, itemSeq: String?) = channelFlow { dataSource.getDur(itemName = itemName, itemSeq = itemSeq).map { result -> @@ -16,4 +16,4 @@ class DurRepositoryImpl @Inject constructor( send(it) } } -} \ No newline at end of file +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/DurIngrElderlyCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/DurIngrSeniorCautionResponse.kt similarity index 98% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/DurIngrElderlyCautionResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/DurIngrSeniorCautionResponse.kt index fa16e053d..92cb2e242 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/DurIngrElderlyCautionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/DurIngrSeniorCautionResponse.kt @@ -5,7 +5,7 @@ import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurIngrElderlyCautionResponse( +data class DurIngrSeniorCautionResponse( @SerialName("body") val body: Body = Body(), @SerialName("header") val header: Header = Header(), ) { diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductElderlyCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductSeniorCautionResponse.kt similarity index 98% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductElderlyCautionResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductSeniorCautionResponse.kt index 00c792bfc..59b86a851 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductElderlyCautionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductSeniorCautionResponse.kt @@ -5,7 +5,7 @@ import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurProductElderlyCautionResponse( +data class DurProductSeniorCautionResponse( @SerialName("body") val body: Body = Body(), @SerialName("header") val header: Header = Header(), ) { diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurDataSource.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurDataSource.kt deleted file mode 100644 index 286edaa60..000000000 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurDataSource.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.android.mediproject.core.network.datasource.dur - -import kotlinx.coroutines.flow.Flow -import retrofit2.http.Query - -interface DurDataSource { - fun getDur( - @Query("item_name") itemName: String?, - @Query("item_seq") itemSeq: String?, - ): Flow> -} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurDataSourceImpl.kt deleted file mode 100644 index 4ecc2bced..000000000 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurDataSourceImpl.kt +++ /dev/null @@ -1,25 +0,0 @@ -package com.android.mediproject.core.network.datasource.dur - -import com.android.mediproject.core.model.toResult -import com.android.mediproject.core.network.module.DataGoKrNetworkApi -import com.android.mediproject.core.network.onResponse -import kotlinx.coroutines.flow.channelFlow -import javax.inject.Inject - -class DurDataSourceImpl @Inject constructor( - private val dataGoKrNetworkApi: DataGoKrNetworkApi, -) : DurDataSource { - - override fun getDur(itemName: String?, itemSeq: String?) = channelFlow { - dataGoKrNetworkApi.getDur(itemName = itemName, itemSeq = itemSeq).onResponse().fold( - onSuccess = { response -> - response.toResult() - }, - onFailure = { - Result.failure(it) - }, - ).also { - send(it) - } - } -} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurIngrDataSource.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurIngrDataSource.kt new file mode 100644 index 000000000..37e8d63ae --- /dev/null +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurIngrDataSource.kt @@ -0,0 +1,47 @@ +package com.android.mediproject.core.network.datasource.dur + +import com.android.mediproject.core.model.datagokr.duringr.capacity.DurIngrCapacityAttentionResponse +import com.android.mediproject.core.model.datagokr.duringr.combination.DurIngrCombinationTabooResponse +import com.android.mediproject.core.model.datagokr.duringr.dosing.DurIngrDosingCautionResponse +import com.android.mediproject.core.model.datagokr.duringr.pregnancy.DurIngrPregnantWomanTabooResponse +import com.android.mediproject.core.model.datagokr.duringr.senior.DurIngrSeniorCautionResponse +import com.android.mediproject.core.model.datagokr.duringr.specialtyagegroup.DurIngrSpecialtyAgeGroupTabooResponse + +interface DurIngrDataSource { + suspend fun getCombinationTabooInfo( + ingrKorName: String?, + ingrCode: String?, + ): Result + + + suspend fun getSpecialtyAgeGroupTabooInfo( + ingrName: String?, + ingrCode: String?, + ): Result + + suspend fun getPregnantWomanTabooInfo( + ingrName: String?, + ingrCode: String?, + ): Result + + suspend fun getCapacityAttentionInfo( + ingrName: String?, + ingrCode: String?, + ): Result + + suspend fun getDosingCautionInfo( + ingrName: String?, + ingrCode: String?, + ): Result + + + suspend fun getSeniorCaution( + ingrName: String?, + ingrCode: String?, + ): Result + + suspend fun getEfficacyGroupDuplicationInfo( + ingrName: String?, + ingrCode: String?, + ): Result +} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurIngrDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurIngrDataSourceImpl.kt new file mode 100644 index 000000000..ee3d56dfb --- /dev/null +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurIngrDataSourceImpl.kt @@ -0,0 +1,44 @@ +package com.android.mediproject.core.network.datasource.dur + +import com.android.mediproject.core.model.datagokr.duringr.capacity.DurIngrCapacityAttentionResponse +import com.android.mediproject.core.model.datagokr.duringr.combination.DurIngrCombinationTabooResponse +import com.android.mediproject.core.model.datagokr.duringr.dosing.DurIngrDosingCautionResponse +import com.android.mediproject.core.model.datagokr.duringr.pregnancy.DurIngrPregnantWomanTabooResponse +import com.android.mediproject.core.model.datagokr.duringr.senior.DurIngrSeniorCautionResponse +import com.android.mediproject.core.model.datagokr.duringr.specialtyagegroup.DurIngrSpecialtyAgeGroupTabooResponse +import com.android.mediproject.core.network.module.datagokr.DurIngrInfoNetworkApi +import javax.inject.Inject + +class DurIngrDataSourceImpl @Inject constructor( + private val durIngrInfoNetworkApi: DurIngrInfoNetworkApi, +) : DurIngrDataSource { + override suspend fun getCombinationTabooInfo(ingrKorName: String?, ingrCode: String?): Result { + TODO("Not yet implemented") + } + + override suspend fun getSpecialtyAgeGroupTabooInfo(ingrName: String?, ingrCode: String?): Result { + TODO("Not yet implemented") + } + + override suspend fun getPregnantWomanTabooInfo(ingrName: String?, ingrCode: String?): Result { + TODO("Not yet implemented") + } + + override suspend fun getCapacityAttentionInfo(ingrName: String?, ingrCode: String?): Result { + TODO("Not yet implemented") + } + + override suspend fun getDosingCautionInfo(ingrName: String?, ingrCode: String?): Result { + TODO("Not yet implemented") + } + + override suspend fun getSeniorCaution(ingrName: String?, ingrCode: String?): Result { + TODO("Not yet implemented") + } + + override suspend fun getEfficacyGroupDuplicationInfo(ingrName: String?, ingrCode: String?): Result { + TODO("Not yet implemented") + } + + +} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSource.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSource.kt new file mode 100644 index 000000000..99eb8b197 --- /dev/null +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSource.kt @@ -0,0 +1,73 @@ +package com.android.mediproject.core.network.datasource.dur + +import com.android.mediproject.core.model.datagokr.durproduct.capacity.DurProductCapacityAttentionResponse +import com.android.mediproject.core.model.datagokr.durproduct.combination.DurProductCombinationTabooResponse +import com.android.mediproject.core.model.datagokr.durproduct.dosing.DurProductDosingCautionResponse +import com.android.mediproject.core.model.datagokr.durproduct.efficacygroupduplication.DurProductEfficacyGroupDuplicationResponse +import com.android.mediproject.core.model.datagokr.durproduct.extendedreleasetablet.DurProductExReleaseTableSplitAttentionResponse +import com.android.mediproject.core.model.datagokr.durproduct.pregnancy.DurProductPregnantWomanTabooResponse +import com.android.mediproject.core.model.datagokr.durproduct.productlist.DurProductListResponse +import com.android.mediproject.core.model.datagokr.durproduct.senior.DurProductSeniorCautionResponse +import com.android.mediproject.core.model.datagokr.durproduct.specialtyagegroup.DurProductSpecialtyAgeGroupTabooResponse + +interface DurProductDataSource { + suspend fun getDurProductList( + itemName: String?, + itemSeq: String?, + ): Result + + suspend fun getSeniorCaution( + itemName: String?, + ingrCode: String?, + itemSeq: String?, + ): Result + + suspend fun getExReleaseTableSplitAttentionInfo( + itemName: String?, + entpName: String?, + typeName: String?, + itemSeq: String?, + ): Result + + suspend fun getEfficacyGroupDuplicationInfo( + itemName: String?, + ingrCode: String?, + typeName: String?, + itemSeq: String?, + ): Result + + suspend fun getDosingCautionInfo( + itemName: String?, + ingrCode: String?, + typeName: String?, + itemSeq: String?, + ): Result + + suspend fun getCapacityAttentionInfo( + itemName: String?, + ingrCode: String?, + typeName: String?, + itemSeq: String?, + ): Result + + suspend fun getPregnantWomanTabooInfo( + itemName: String?, + ingrCode: String?, + typeName: String?, + itemSeq: String?, + ): Result + + suspend fun getSpecialtyAgeGroupTabooInfo( + itemName: String?, + ingrCode: String?, + typeName: String?, + itemSeq: String?, + ): Result + + suspend fun getCombinationTabooInfo( + itemName: String?, + ingrCode: String?, + typeName: String?, + itemSeq: String?, + ): Result +} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt new file mode 100644 index 000000000..5311593ad --- /dev/null +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt @@ -0,0 +1,90 @@ +package com.android.mediproject.core.network.datasource.dur + +import com.android.mediproject.core.model.datagokr.durproduct.capacity.DurProductCapacityAttentionResponse +import com.android.mediproject.core.model.datagokr.durproduct.combination.DurProductCombinationTabooResponse +import com.android.mediproject.core.model.datagokr.durproduct.dosing.DurProductDosingCautionResponse +import com.android.mediproject.core.model.datagokr.durproduct.efficacygroupduplication.DurProductEfficacyGroupDuplicationResponse +import com.android.mediproject.core.model.datagokr.durproduct.extendedreleasetablet.DurProductExReleaseTableSplitAttentionResponse +import com.android.mediproject.core.model.datagokr.durproduct.pregnancy.DurProductPregnantWomanTabooResponse +import com.android.mediproject.core.model.datagokr.durproduct.productlist.DurProductListResponse +import com.android.mediproject.core.model.datagokr.durproduct.senior.DurProductSeniorCautionResponse +import com.android.mediproject.core.model.datagokr.durproduct.specialtyagegroup.DurProductSpecialtyAgeGroupTabooResponse +import com.android.mediproject.core.network.module.datagokr.DurProductInfoNetworkApi +import javax.inject.Inject + +class DurProductDataSourceImpl @Inject constructor( + private val durProductInfoNetworkApi: DurProductInfoNetworkApi, +) : DurProductDataSource { + override suspend fun getDurProductList(itemName: String?, itemSeq: String?): Result { + TODO("Not yet implemented") + } + + override suspend fun getSeniorCaution(itemName: String?, ingrCode: String?, itemSeq: String?): Result { + TODO("Not yet implemented") + } + + override suspend fun getExReleaseTableSplitAttentionInfo( + itemName: String?, + entpName: String?, + typeName: String?, + itemSeq: String?, + ): Result { + TODO("Not yet implemented") + } + + override suspend fun getEfficacyGroupDuplicationInfo( + itemName: String?, + ingrCode: String?, + typeName: String?, + itemSeq: String?, + ): Result { + TODO("Not yet implemented") + } + + override suspend fun getDosingCautionInfo( + itemName: String?, + ingrCode: String?, + typeName: String?, + itemSeq: String?, + ): Result { + TODO("Not yet implemented") + } + + override suspend fun getCapacityAttentionInfo( + itemName: String?, + ingrCode: String?, + typeName: String?, + itemSeq: String?, + ): Result { + TODO("Not yet implemented") + } + + override suspend fun getPregnantWomanTabooInfo( + itemName: String?, + ingrCode: String?, + typeName: String?, + itemSeq: String?, + ): Result { + TODO("Not yet implemented") + } + + override suspend fun getSpecialtyAgeGroupTabooInfo( + itemName: String?, + ingrCode: String?, + typeName: String?, + itemSeq: String?, + ): Result { + TODO("Not yet implemented") + } + + override suspend fun getCombinationTabooInfo( + itemName: String?, + ingrCode: String?, + typeName: String?, + itemSeq: String?, + ): Result { + TODO("Not yet implemented") + } + + +} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/elderlycaution/ElderlyCautionDataSource.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/elderlycaution/ElderlyCautionDataSource.kt deleted file mode 100644 index 0dac6041b..000000000 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/elderlycaution/ElderlyCautionDataSource.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.android.mediproject.core.network.datasource.elderlycaution - -import retrofit2.http.Query - -interface ElderlyCautionDataSource { - - /** - * 의약품 노인주의 정보 조회 - * - * @param itemName 의약품명 - * @param itemSeq 의약품 고유번호 - */ - suspend fun getElderlyCaution( - @Query("itemName") itemName: String?, - @Query("itemSeq") itemSeq: String?, - ): Result -} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/elderlycaution/ElderlyCautionDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/elderlycaution/ElderlyCautionDataSourceImpl.kt deleted file mode 100644 index 291f9cc30..000000000 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/elderlycaution/ElderlyCautionDataSourceImpl.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.android.mediproject.core.network.datasource.elderlycaution - -import com.android.mediproject.core.model.toResult -import com.android.mediproject.core.network.module.DataGoKrNetworkApi -import com.android.mediproject.core.network.onResponse -import javax.inject.Inject - -class ElderlyCautionDataSourceImpl @Inject constructor(private val dataGoKrNetworkApi: DataGoKrNetworkApi) : ElderlyCautionDataSource { - - - override suspend fun getElderlyCaution(itemName: String?, itemSeq: String?): Result = - dataGoKrNetworkApi.getElderlyCaution(itemName = itemName, _itemSeq = itemSeq).onResponse().fold( - onSuccess = { response -> - response.toResult() - }, - onFailure = { - Result.failure(it) - }, - ) - -} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/granule/GranuleIdentificationDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/granule/GranuleIdentificationDataSourceImpl.kt index da0c04617..616df2842 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/granule/GranuleIdentificationDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/granule/GranuleIdentificationDataSourceImpl.kt @@ -3,6 +3,7 @@ package com.android.mediproject.core.network.datasource.granule import com.android.mediproject.core.model.remote.granule.GranuleIdentificationInfoResponse import com.android.mediproject.core.model.toResult import com.android.mediproject.core.network.module.DataGoKrNetworkApi +import com.android.mediproject.core.network.module.datagokr.DataGoKrNetworkApi import com.android.mediproject.core.network.onResponse import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/adminaction/AdminActionDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/adminaction/AdminActionDataSourceImpl.kt index 2766904ad..1d5cb9e92 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/adminaction/AdminActionDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/adminaction/AdminActionDataSourceImpl.kt @@ -4,6 +4,7 @@ import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers import com.android.mediproject.core.model.toResult import com.android.mediproject.core.network.module.DataGoKrNetworkApi +import com.android.mediproject.core.network.module.datagokr.DataGoKrNetworkApi import com.android.mediproject.core.network.onResponse import kotlinx.coroutines.CoroutineDispatcher import javax.inject.Inject diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/DataGoKrNetwork.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/DataGoKrNetwork.kt index 0e32ccf62..0227eb0c9 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/module/DataGoKrNetwork.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/DataGoKrNetwork.kt @@ -3,10 +3,10 @@ package com.android.mediproject.core.network.module import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers import com.android.mediproject.core.database.cache.manager.MedicineDataCacheManager -import com.android.mediproject.core.network.datasource.dur.DurDataSource -import com.android.mediproject.core.network.datasource.dur.DurDataSourceImpl -import com.android.mediproject.core.network.datasource.elderlycaution.ElderlyCautionDataSource -import com.android.mediproject.core.network.datasource.elderlycaution.ElderlyCautionDataSourceImpl +import com.android.mediproject.core.network.datasource.dur.DurIngrDataSource +import com.android.mediproject.core.network.datasource.dur.DurIngrDataSourceImpl +import com.android.mediproject.core.network.datasource.dur.DurProductDataSource +import com.android.mediproject.core.network.datasource.dur.DurProductDataSourceImpl import com.android.mediproject.core.network.datasource.granule.GranuleIdentificationDataSource import com.android.mediproject.core.network.datasource.granule.GranuleIdentificationDataSourceImpl import com.android.mediproject.core.network.datasource.image.GoogleSearchDataSource @@ -17,6 +17,8 @@ import com.android.mediproject.core.network.datasource.penalties.adminaction.Adm import com.android.mediproject.core.network.datasource.penalties.recallsuspension.RecallSuspensionDataSource import com.android.mediproject.core.network.datasource.penalties.recallsuspension.RecallSuspensionDataSourceImpl import com.android.mediproject.core.network.module.datagokr.DataGoKrNetworkApi +import com.android.mediproject.core.network.module.datagokr.DurIngrInfoNetworkApi +import com.android.mediproject.core.network.module.datagokr.DurProductInfoNetworkApi import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory import dagger.Module import dagger.Provides @@ -31,12 +33,13 @@ import retrofit2.converter.scalars.ScalarsConverterFactory import javax.inject.Named import javax.inject.Singleton -const val DATA_GO_KR_BASEURL = "https://apis.data.go.kr/1471000/" +private const val DATA_GO_KR_BASEURL = "https://apis.data.go.kr/1471000/" @InstallIn(SingletonComponent::class) @Module object DataGoKrNetwork { + // Retrofit2 인스턴스 --------------------------------------------------------------------------------------------------- @Provides @Singleton @Named("dataGoKrNetworkApiWithJsonResponse") @@ -51,6 +54,7 @@ object DataGoKrNetwork { Retrofit.Builder().client(okHttpClient).addConverterFactory(ScalarsConverterFactory.create()).baseUrl(DATA_GO_KR_BASEURL).build() .create(DataGoKrNetworkApi::class.java) + // DataSource 인스턴스 --------------------------------------------------------------------------------------------------- @Provides @Singleton @@ -75,8 +79,7 @@ object DataGoKrNetwork { medicineDataCacheManager: MedicineDataCacheManager, googleSearchDataSource: GoogleSearchDataSource, @Dispatcher(MediDispatchers.Default) defaultDispatcher: CoroutineDispatcher, - - ): MedicineApprovalDataSource = MedicineApprovalDataSourceImpl( + ): MedicineApprovalDataSource = MedicineApprovalDataSourceImpl( dataGoKrNetworkApiWithString, dataGoKrNetworkApiWithJson, medicineDataCacheManager, googleSearchDataSource, defaultDispatcher, ) @@ -86,14 +89,14 @@ object DataGoKrNetwork { @Named("dataGoKrNetworkApiWithJsonResponse") dataGoKrNetworkApi: DataGoKrNetworkApi, ): GranuleIdentificationDataSource = GranuleIdentificationDataSourceImpl(dataGoKrNetworkApi) + // DUR 품목 정보 --------------------------------------------------------------------------------------------------- @Provides @Singleton - fun providesElderlyCautionDataSource( - @Named("dataGoKrNetworkApiWithJsonResponse") dataGoKrNetworkApi: DataGoKrNetworkApi, - ): ElderlyCautionDataSource = ElderlyCautionDataSourceImpl(dataGoKrNetworkApi) + fun providesDurProductDataSource(@Named("dataGoKrNetworkApiWithJsonResponse") api: DurProductInfoNetworkApi): DurProductDataSource = + DurProductDataSourceImpl(api) @Provides @Singleton - fun providesDurDataSource(@Named("dataGoKrNetworkApiWithJsonResponse") dataGoKrNetworkApi: DataGoKrNetworkApi): DurDataSource = - DurDataSourceImpl(dataGoKrNetworkApi) + fun providesDurIngrDataSource(@Named("dataGoKrNetworkApiWithJsonResponse") api: DurIngrInfoNetworkApi): DurIngrDataSource = + DurIngrDataSourceImpl(api) } diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DataGoKrNetworkApi.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DataGoKrNetworkApi.kt index effde93d6..28dc9a75b 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DataGoKrNetworkApi.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DataGoKrNetworkApi.kt @@ -14,8 +14,7 @@ import retrofit2.http.GET import retrofit2.http.Query -interface DataGoKrNetworkApi { - +interface DataGoKrNetworkApi : DurProductInfoNetworkApi, DurIngrInfoNetworkApi { /** * 의약품 허가 목록 조회 * diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurIngrInfoNetworkApi.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurIngrInfoNetworkApi.kt index e171c25d6..72b60ab13 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurIngrInfoNetworkApi.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurIngrInfoNetworkApi.kt @@ -4,7 +4,12 @@ import com.android.mediproject.core.common.BuildConfig import com.android.mediproject.core.common.DATA_GO_KR_DEFAULT_PAGE_NO import com.android.mediproject.core.common.DATA_GO_KR_PAGE_SIZE import com.android.mediproject.core.common.JSON -import com.android.mediproject.core.model.remote.granule.GranuleIdentificationInfoResponse +import com.android.mediproject.core.model.datagokr.duringr.capacity.DurIngrCapacityAttentionResponse +import com.android.mediproject.core.model.datagokr.duringr.combination.DurIngrCombinationTabooResponse +import com.android.mediproject.core.model.datagokr.duringr.dosing.DurIngrDosingCautionResponse +import com.android.mediproject.core.model.datagokr.duringr.pregnancy.DurIngrPregnantWomanTabooResponse +import com.android.mediproject.core.model.datagokr.duringr.senior.DurIngrSeniorCautionResponse +import com.android.mediproject.core.model.datagokr.duringr.specialtyagegroup.DurIngrSpecialtyAgeGroupTabooResponse import retrofit2.Response import retrofit2.http.GET import retrofit2.http.Query @@ -31,7 +36,7 @@ interface DurIngrInfoNetworkApi { @Query("ingrCode") ingrCode: String?, @Query("type") type: String = JSON, @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, - ): Response + ): Response /** @@ -49,7 +54,7 @@ interface DurIngrInfoNetworkApi { @Query("ingrCode") ingrCode: String?, @Query("type") type: String = JSON, @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, - ): Response + ): Response /** * 임부금기 목록 조회 @@ -66,7 +71,7 @@ interface DurIngrInfoNetworkApi { @Query("ingrCode") ingrCode: String?, @Query("type") type: String = JSON, @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, - ): Response + ): Response /** * 용량주의 정보 조회 @@ -83,7 +88,7 @@ interface DurIngrInfoNetworkApi { @Query("ingrCode") ingrCode: String?, @Query("type") type: String = JSON, @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, - ) + ): Response /** * 투여기간 정보 조회 @@ -100,7 +105,7 @@ interface DurIngrInfoNetworkApi { @Query("ingrCode") ingrCode: String?, @Query("type") type: String = JSON, @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, - ) + ): Response /** @@ -110,7 +115,7 @@ interface DurIngrInfoNetworkApi { * @param ingrCode DUR성분(ex : D000056) */ @GET(value = "DURIrdntInfoService02/getOdsnAtentInfoList01") - suspend fun getElderlyCaution( + suspend fun getSeniorCaution( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, @Query("typeName") typeName: String = "노인주의", @@ -118,7 +123,7 @@ interface DurIngrInfoNetworkApi { @Query("ingrCode") ingrCode: String?, @Query("type") type: String = JSON, @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, - ) + ): Response /** * 효능군중복주의 정보 조회 @@ -135,5 +140,5 @@ interface DurIngrInfoNetworkApi { @Query("ingrCode") ingrCode: String?, @Query("type") type: String = JSON, @Query("numOfRows") numOfRows: Int = DATA_GO_KR_PAGE_SIZE, - ) + ): Response } diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurProductInfoNetworkApi.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurProductInfoNetworkApi.kt index b72f9810f..7cacaf1a6 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurProductInfoNetworkApi.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurProductInfoNetworkApi.kt @@ -4,7 +4,15 @@ import com.android.mediproject.core.common.BuildConfig import com.android.mediproject.core.common.DATA_GO_KR_DEFAULT_PAGE_NO import com.android.mediproject.core.common.DATA_GO_KR_DEFAULT_ROW_SIZE import com.android.mediproject.core.common.JSON -import com.android.mediproject.core.model.datagokr.durproduct.senior.DurProductElderlyCautionResponse +import com.android.mediproject.core.model.datagokr.durproduct.capacity.DurProductCapacityAttentionResponse +import com.android.mediproject.core.model.datagokr.durproduct.combination.DurProductCombinationTabooResponse +import com.android.mediproject.core.model.datagokr.durproduct.dosing.DurProductDosingCautionResponse +import com.android.mediproject.core.model.datagokr.durproduct.efficacygroupduplication.DurProductEfficacyGroupDuplicationResponse +import com.android.mediproject.core.model.datagokr.durproduct.extendedreleasetablet.DurProductExReleaseTableSplitAttentionResponse +import com.android.mediproject.core.model.datagokr.durproduct.pregnancy.DurProductPregnantWomanTabooResponse +import com.android.mediproject.core.model.datagokr.durproduct.productlist.DurProductListResponse +import com.android.mediproject.core.model.datagokr.durproduct.senior.DurProductSeniorCautionResponse +import com.android.mediproject.core.model.datagokr.durproduct.specialtyagegroup.DurProductSpecialtyAgeGroupTabooResponse import retrofit2.Response import retrofit2.http.GET import retrofit2.http.Query @@ -32,7 +40,7 @@ interface DurProductInfoNetworkApi { @Query("itemSeq") itemSeq: String?, @Query("type") type: String = JSON, @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, - ): Response + ): Response /** * 노인 주의 정보 조회 @@ -44,7 +52,7 @@ interface DurProductInfoNetworkApi { * */ @GET(value = "DURPrdlstInfoService02/getOdsnAtentInfoList2") - suspend fun getElderlyCaution( + suspend fun getSeniorCaution( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, @Query("typeName") typeName: String = "노인주의", @@ -53,7 +61,7 @@ interface DurProductInfoNetworkApi { @Query("itemSeq") itemSeq: String?, @Query("type") type: String = JSON, @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, - ): Response + ): Response /** * 서방정 분할 주의 정보 조회 @@ -73,7 +81,7 @@ interface DurProductInfoNetworkApi { @Query("itemSeq") itemSeq: String?, @Query("type") type: String = JSON, @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, - ) + ): Response /** * 효능군 중복 정보 조회 @@ -93,7 +101,7 @@ interface DurProductInfoNetworkApi { @Query("itemSeq") itemSeq: String?, @Query("type") type: String = JSON, @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, - ) + ): Response /** * 투여기간 주의 정보 조회 @@ -114,7 +122,7 @@ interface DurProductInfoNetworkApi { @Query("itemSeq") itemSeq: String?, @Query("type") type: String = JSON, @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, - ) + ): Response /** * 용량주의 정보 조회 @@ -135,7 +143,7 @@ interface DurProductInfoNetworkApi { @Query("itemSeq") itemSeq: String?, @Query("type") type: String = JSON, @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, - ) + ): Response /** * 임산부 금기 정보 조회 @@ -156,7 +164,7 @@ interface DurProductInfoNetworkApi { @Query("itemSeq") itemSeq: String?, @Query("type") type: String = JSON, @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, - ) + ): Response /** * 특정연령대금기 정보조회 @@ -177,7 +185,7 @@ interface DurProductInfoNetworkApi { @Query("itemSeq") itemSeq: String?, @Query("type") type: String = JSON, @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, - ) + ): Response /** * 병용금기 정보 조회 @@ -198,5 +206,5 @@ interface DurProductInfoNetworkApi { @Query("itemSeq") itemSeq: String?, @Query("type") type: String = JSON, @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, - ) + ): Response } From 2d979e3e5552609211a04673b2cb30c412ea3638 Mon Sep 17 00:00:00 2001 From: JSPark <48265129+pknujsp@users.noreply.github.com> Date: Wed, 26 Jul 2023 19:14:21 +0900 Subject: [PATCH 05/13] =?UTF-8?q?#193=20DUR=20=EC=84=B1=EB=B6=84/=ED=92=88?= =?UTF-8?q?=EB=AA=A9=20=EC=9D=91=EB=8B=B5=20=ED=81=B4=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=EB=AA=A8=EB=91=90=20DataGoKrBaseResponse=20=EC=83=81=EC=86=8D?= =?UTF-8?q?=EB=B0=9B=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../capacity/DurIngrCapacityAttentionResponse.kt | 10 ++-------- .../combination/DurIngrCombinationTabooResponse.kt | 10 +++------- .../duringr/dosing/DurIngrDosingCautionResponse.kt | 9 ++------- .../DurIngrEfficacyGroupDuplicationResponse.kt | 10 +++------- .../pregnancy/DurIngrPregnantWomanTabooResponse.kt | 9 ++------- .../duringr/senior/DurIngrSeniorCautionResponse.kt | 10 +++------- .../DurIngrSpecialtyAgeGroupTabooResponse.kt | 11 ++++------- .../capacity/DurProductCapacityAttentionResponse.kt | 10 +++------- .../combination/DurProductCombinationTabooResponse.kt | 10 +++------- .../dosing/DurProductDosingCautionResponse.kt | 11 ++++------- .../DurProductEfficacyGroupDuplicationResponse.kt | 10 +++------- .../DurProductExReleaseTableSplitAttentionResponse.kt | 11 ++++------- .../pregnancy/DurProductPregnantWomanTabooResponse.kt | 10 +++------- .../durproduct/productlist/DurProductListResponse.kt | 10 +++------- .../senior/DurProductSeniorCautionResponse.kt | 10 +++------- .../DurProductSpecialtyAgeGroupTabooResponse.kt | 10 +++------- 16 files changed, 48 insertions(+), 113 deletions(-) diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/capacity/DurIngrCapacityAttentionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/capacity/DurIngrCapacityAttentionResponse.kt index 8066a93dd..23bea603c 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/capacity/DurIngrCapacityAttentionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/capacity/DurIngrCapacityAttentionResponse.kt @@ -1,14 +1,14 @@ package com.android.mediproject.core.model.datagokr.duringr.capacity +import com.android.mediproject.core.model.DataGoKrBaseResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class DurIngrCapacityAttentionResponse( @SerialName("body") val body: Body = Body(), - @SerialName("header") val header: Header = Header(), -) { +) : DataGoKrBaseResponse() { @Serializable data class Body( @SerialName("items") val items: List = listOf(), @@ -58,10 +58,4 @@ data class DurIngrCapacityAttentionResponse( ) } } - - @Serializable - data class Header( - @SerialName("resultCode") val resultCode: String = "", // 00 - @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. - ) } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/combination/DurIngrCombinationTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/combination/DurIngrCombinationTabooResponse.kt index d2ebffbeb..85496c983 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/combination/DurIngrCombinationTabooResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/combination/DurIngrCombinationTabooResponse.kt @@ -1,14 +1,15 @@ package com.android.mediproject.core.model.datagokr.duringr.combination +import com.android.mediproject.core.model.DataGoKrBaseResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class DurIngrCombinationTabooResponse( @SerialName("body") val body: Body = Body(), - @SerialName("header") val header: Header = Header(), -) { + + ) : DataGoKrBaseResponse() { @Serializable data class Body( @SerialName("items") val items: List = listOf(), @@ -67,9 +68,4 @@ data class DurIngrCombinationTabooResponse( } } - @Serializable - data class Header( - @SerialName("resultCode") val resultCode: String = "", // 00 - @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. - ) } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/dosing/DurIngrDosingCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/dosing/DurIngrDosingCautionResponse.kt index 8c10b3b5a..0515ab28f 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/dosing/DurIngrDosingCautionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/dosing/DurIngrDosingCautionResponse.kt @@ -1,14 +1,14 @@ package com.android.mediproject.core.model.datagokr.duringr.dosing +import com.android.mediproject.core.model.DataGoKrBaseResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class DurIngrDosingCautionResponse( @SerialName("body") val body: Body = Body(), - @SerialName("header") val header: Header = Header(), -) { +) : DataGoKrBaseResponse() { @Serializable data class Body( @SerialName("items") val items: List = listOf(), @@ -59,9 +59,4 @@ data class DurIngrDosingCautionResponse( } } - @Serializable - data class Header( - @SerialName("resultCode") val resultCode: String = "", // 00 - @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. - ) } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/efficacygroupduplication/DurIngrEfficacyGroupDuplicationResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/efficacygroupduplication/DurIngrEfficacyGroupDuplicationResponse.kt index 2164b0c57..75949300d 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/efficacygroupduplication/DurIngrEfficacyGroupDuplicationResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/efficacygroupduplication/DurIngrEfficacyGroupDuplicationResponse.kt @@ -1,14 +1,14 @@ package com.android.mediproject.core.model.datagokr.duringr.efficacygroupduplication +import com.android.mediproject.core.model.DataGoKrBaseResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class DurIngrEfficacyGroupDuplicationResponse( @SerialName("body") val body: Body = Body(), - @SerialName("header") val header: Header = Header(), -) { +) : DataGoKrBaseResponse() { @Serializable data class Body( @SerialName("items") val items: List = listOf(), @@ -57,9 +57,5 @@ data class DurIngrEfficacyGroupDuplicationResponse( } } - @Serializable - data class Header( - @SerialName("resultCode") val resultCode: String = "", // 00 - @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. - ) + } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/pregnancy/DurIngrPregnantWomanTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/pregnancy/DurIngrPregnantWomanTabooResponse.kt index 4d532ff75..ac78d5962 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/pregnancy/DurIngrPregnantWomanTabooResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/pregnancy/DurIngrPregnantWomanTabooResponse.kt @@ -1,14 +1,14 @@ package com.android.mediproject.core.model.datagokr.duringr.pregnancy +import com.android.mediproject.core.model.DataGoKrBaseResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class DurIngrPregnantWomanTabooResponse( @SerialName("body") val body: Body = Body(), - @SerialName("header") val header: Header = Header(), -) { +) : DataGoKrBaseResponse() { @Serializable data class Body( @SerialName("items") val items: List = listOf(), @@ -59,9 +59,4 @@ data class DurIngrPregnantWomanTabooResponse( } } - @Serializable - data class Header( - @SerialName("resultCode") val resultCode: String = "", // 00 - @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. - ) } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/DurIngrSeniorCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/DurIngrSeniorCautionResponse.kt index 92cb2e242..dd2bc153a 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/DurIngrSeniorCautionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/DurIngrSeniorCautionResponse.kt @@ -1,14 +1,14 @@ package com.android.mediproject.core.model.datagokr.duringr.senior +import com.android.mediproject.core.model.DataGoKrBaseResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class DurIngrSeniorCautionResponse( @SerialName("body") val body: Body = Body(), - @SerialName("header") val header: Header = Header(), -) { +) : DataGoKrBaseResponse() { @Serializable data class Body( @SerialName("items") val items: List = listOf(), @@ -55,9 +55,5 @@ data class DurIngrSeniorCautionResponse( } } - @Serializable - data class Header( - @SerialName("resultCode") val resultCode: String = "", // 00 - @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. - ) + } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/specialtyagegroup/DurIngrSpecialtyAgeGroupTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/specialtyagegroup/DurIngrSpecialtyAgeGroupTabooResponse.kt index a41db1bfb..0f16117c5 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/specialtyagegroup/DurIngrSpecialtyAgeGroupTabooResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/specialtyagegroup/DurIngrSpecialtyAgeGroupTabooResponse.kt @@ -1,14 +1,15 @@ package com.android.mediproject.core.model.datagokr.duringr.specialtyagegroup +import com.android.mediproject.core.model.DataGoKrBaseResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class DurIngrSpecialtyAgeGroupTabooResponse( @SerialName("body") val body: Body = Body(), - @SerialName("header") val header: Header = Header(), -) { + + ) : DataGoKrBaseResponse() { @Serializable data class Body( @SerialName("items") val items: List = listOf(), @@ -59,9 +60,5 @@ data class DurIngrSpecialtyAgeGroupTabooResponse( } } - @Serializable - data class Header( - @SerialName("resultCode") val resultCode: String = "", // 00 - @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. - ) + } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/capacity/DurProductCapacityAttentionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/capacity/DurProductCapacityAttentionResponse.kt index 21574c669..be15fd785 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/capacity/DurProductCapacityAttentionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/capacity/DurProductCapacityAttentionResponse.kt @@ -1,14 +1,15 @@ package com.android.mediproject.core.model.datagokr.durproduct.capacity +import com.android.mediproject.core.model.DataGoKrBaseResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class DurProductCapacityAttentionResponse( @SerialName("body") val body: Body = Body(), - @SerialName("header") val header: Header = Header(), -) { + + ) : DataGoKrBaseResponse() { @Serializable data class Body( @SerialName("items") val items: List = listOf(), @@ -66,9 +67,4 @@ data class DurProductCapacityAttentionResponse( ) } - @Serializable - data class Header( - @SerialName("resultCode") val resultCode: String = "", // 00 - @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. - ) } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/combination/DurProductCombinationTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/combination/DurProductCombinationTabooResponse.kt index 64c56f40a..6443bcad5 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/combination/DurProductCombinationTabooResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/combination/DurProductCombinationTabooResponse.kt @@ -1,14 +1,14 @@ package com.android.mediproject.core.model.datagokr.durproduct.combination +import com.android.mediproject.core.model.DataGoKrBaseResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class DurProductCombinationTabooResponse( @SerialName("body") val body: Body = Body(), - @SerialName("header") val header: Header = Header(), -) { +) : DataGoKrBaseResponse() { @Serializable data class Body( @SerialName("items") val items: List = listOf(), @@ -109,9 +109,5 @@ data class DurProductCombinationTabooResponse( ) } - @Serializable - data class Header( - @SerialName("resultCode") val resultCode: String = "", // 00 - @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. - ) + } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/dosing/DurProductDosingCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/dosing/DurProductDosingCautionResponse.kt index 62285fdc5..ab242c1cb 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/dosing/DurProductDosingCautionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/dosing/DurProductDosingCautionResponse.kt @@ -1,14 +1,15 @@ package com.android.mediproject.core.model.datagokr.durproduct.dosing +import com.android.mediproject.core.model.DataGoKrBaseResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class DurProductDosingCautionResponse( @SerialName("body") val body: Body = Body(), - @SerialName("header") val header: Header = Header(), -) { + + ) : DataGoKrBaseResponse() { @Serializable data class Body( @SerialName("items") val items: List = listOf(), @@ -65,9 +66,5 @@ data class DurProductDosingCautionResponse( ) } - @Serializable - data class Header( - @SerialName("resultCode") val resultCode: String = "", // 00 - @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. - ) + } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplicationResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplicationResponse.kt index 830e7e1ab..baf1062ed 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplicationResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplicationResponse.kt @@ -1,14 +1,14 @@ package com.android.mediproject.core.model.datagokr.durproduct.efficacygroupduplication +import com.android.mediproject.core.model.DataGoKrBaseResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class DurProductEfficacyGroupDuplicationResponse( @SerialName("body") val body: Body = Body(), - @SerialName("header") val header: Header = Header(), -) { +) : DataGoKrBaseResponse() { @Serializable data class Body( @SerialName("items") val items: List = listOf(), @@ -77,9 +77,5 @@ data class DurProductEfficacyGroupDuplicationResponse( ) } - @Serializable - data class Header( - @SerialName("resultCode") val resultCode: String = "", // 00 - @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. - ) + } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt index bd8897c98..5438aa354 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt @@ -1,14 +1,15 @@ package com.android.mediproject.core.model.datagokr.durproduct.extendedreleasetablet +import com.android.mediproject.core.model.DataGoKrBaseResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class DurProductExReleaseTableSplitAttentionResponse( @SerialName("body") val body: Body = Body(), - @SerialName("header") val header: Header = Header(), -) { + + ) : DataGoKrBaseResponse() { @Serializable data class Body( @SerialName("items") val items: List = listOf(), @@ -56,9 +57,5 @@ data class DurProductExReleaseTableSplitAttentionResponse( ) } - @Serializable - data class Header( - @SerialName("resultCode") val resultCode: String = "", // 00 - @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. - ) + } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/pregnancy/DurProductPregnantWomanTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/pregnancy/DurProductPregnantWomanTabooResponse.kt index 93348f1d1..208268664 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/pregnancy/DurProductPregnantWomanTabooResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/pregnancy/DurProductPregnantWomanTabooResponse.kt @@ -1,14 +1,14 @@ package com.android.mediproject.core.model.datagokr.durproduct.pregnancy +import com.android.mediproject.core.model.DataGoKrBaseResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class DurProductPregnantWomanTabooResponse( @SerialName("body") val body: Body = Body(), - @SerialName("header") val header: Header = Header(), -) { +) : DataGoKrBaseResponse() { @Serializable data class Body( @SerialName("items") val items: List = listOf(), @@ -66,9 +66,5 @@ data class DurProductPregnantWomanTabooResponse( ) } - @Serializable - data class Header( - @SerialName("resultCode") val resultCode: String = "", // 00 - @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. - ) + } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/productlist/DurProductListResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/productlist/DurProductListResponse.kt index deab7434a..e8284b703 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/productlist/DurProductListResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/productlist/DurProductListResponse.kt @@ -1,14 +1,14 @@ package com.android.mediproject.core.model.datagokr.durproduct.productlist +import com.android.mediproject.core.model.DataGoKrBaseResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class DurProductListResponse( @SerialName("body") val body: Body = Body(), - @SerialName("header") val header: Header = Header(), -) { +) : DataGoKrBaseResponse() { @Serializable data class Body( @SerialName("items") val items: List = listOf(), @@ -72,9 +72,5 @@ data class DurProductListResponse( ) } - @Serializable - data class Header( - @SerialName("resultCode") val resultCode: String = "", // 00 - @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. - ) + } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductSeniorCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductSeniorCautionResponse.kt index 59b86a851..e8e859a8a 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductSeniorCautionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductSeniorCautionResponse.kt @@ -1,14 +1,14 @@ package com.android.mediproject.core.model.datagokr.durproduct.senior +import com.android.mediproject.core.model.DataGoKrBaseResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class DurProductSeniorCautionResponse( @SerialName("body") val body: Body = Body(), - @SerialName("header") val header: Header = Header(), -) { +) : DataGoKrBaseResponse() { @Serializable data class Body( @SerialName("items") val items: List = listOf(), @@ -67,9 +67,5 @@ data class DurProductSeniorCautionResponse( ) } - @Serializable - data class Header( - @SerialName("resultCode") val resultCode: String = "", // 00 - @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. - ) + } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTabooResponse.kt index 98867bcfe..b02847028 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTabooResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTabooResponse.kt @@ -1,14 +1,14 @@ package com.android.mediproject.core.model.datagokr.durproduct.specialtyagegroup +import com.android.mediproject.core.model.DataGoKrBaseResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class DurProductSpecialtyAgeGroupTabooResponse( @SerialName("body") val body: Body = Body(), - @SerialName("header") val header: Header = Header(), -) { +) : DataGoKrBaseResponse() { @Serializable data class Body( @SerialName("items") val items: List = listOf(), @@ -66,9 +66,5 @@ data class DurProductSpecialtyAgeGroupTabooResponse( ) } - @Serializable - data class Header( - @SerialName("resultCode") val resultCode: String = "", // 00 - @SerialName("resultMsg") val resultMsg: String = "", // NORMAL SERVICE. - ) + } From 4e6b3fecd5bbed9420bb55119494b89c782ae11b Mon Sep 17 00:00:00 2001 From: JSPark <48265129+pknujsp@users.noreply.github.com> Date: Wed, 26 Jul 2023 19:35:13 +0900 Subject: [PATCH 06/13] =?UTF-8?q?#193=20DUR=20=EC=84=B1=EB=B6=84/=ED=92=88?= =?UTF-8?q?=EB=AA=A9=20=EC=9D=91=EB=8B=B5=20DataSource=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=9E=91=EC=84=B1=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/data/remote/di/RepositoryModule.kt | 6 +-- .../ElderlyCautionRepository.kt | 2 +- .../ElderlyCautionRepositoryImpl.kt | 2 +- .../core/domain/GetElderlyCautionUseCase.kt | 2 +- .../core/network/ResponseWrapper.kt | 18 +++---- .../datasource/dur/DurIngrDataSourceImpl.kt | 39 ++++++-------- .../dur/DurProductDataSourceImpl.kt | 54 +++++++++---------- 7 files changed, 55 insertions(+), 68 deletions(-) rename core/data/src/main/java/com/android/mediproject/core/data/remote/{elderlycaution => senior}/ElderlyCautionRepository.kt (74%) rename core/data/src/main/java/com/android/mediproject/core/data/remote/{elderlycaution => senior}/ElderlyCautionRepositoryImpl.kt (89%) diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/di/RepositoryModule.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/di/RepositoryModule.kt index 1d6bdda97..85fde1a13 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/di/RepositoryModule.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/remote/di/RepositoryModule.kt @@ -8,8 +8,8 @@ import com.android.mediproject.core.data.remote.comments.CommentsRepository import com.android.mediproject.core.data.remote.comments.CommentsRepositoryImpl import com.android.mediproject.core.data.remote.dur.DurRepository import com.android.mediproject.core.data.remote.dur.DurRepositoryImpl -import com.android.mediproject.core.data.remote.elderlycaution.ElderlyCautionRepository -import com.android.mediproject.core.data.remote.elderlycaution.ElderlyCautionRepositoryImpl +import com.android.mediproject.core.data.remote.senior.ElderlyCautionRepository +import com.android.mediproject.core.data.remote.senior.ElderlyCautionRepositoryImpl import com.android.mediproject.core.data.remote.favoritemedicine.FavoriteMedicineRepository import com.android.mediproject.core.data.remote.favoritemedicine.FavoriteMedicineRepositoryImpl import com.android.mediproject.core.data.remote.granule.GranuleIdentificationRepository @@ -100,7 +100,7 @@ object RepositoryModule { @Provides @Singleton - fun providesElderlyCautionRepository(elderlyCautionDataSource: ElderlyCautionDataSource): ElderlyCautionRepository = + fun providesElderlyCautionRepository(elderlyCautionDataSource: ): ElderlyCautionRepository = ElderlyCautionRepositoryImpl(elderlyCautionDataSource) @Provides diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/elderlycaution/ElderlyCautionRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/senior/ElderlyCautionRepository.kt similarity index 74% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/elderlycaution/ElderlyCautionRepository.kt rename to core/data/src/main/java/com/android/mediproject/core/data/remote/senior/ElderlyCautionRepository.kt index 18a684239..ac76478d3 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/elderlycaution/ElderlyCautionRepository.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/remote/senior/ElderlyCautionRepository.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.data.remote.elderlycaution +package com.android.mediproject.core.data.remote.senior interface ElderlyCautionRepository { suspend fun getElderlyCaution( diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/elderlycaution/ElderlyCautionRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/senior/ElderlyCautionRepositoryImpl.kt similarity index 89% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/elderlycaution/ElderlyCautionRepositoryImpl.kt rename to core/data/src/main/java/com/android/mediproject/core/data/remote/senior/ElderlyCautionRepositoryImpl.kt index 9936057e6..27649a058 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/elderlycaution/ElderlyCautionRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/remote/senior/ElderlyCautionRepositoryImpl.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.data.remote.elderlycaution +package com.android.mediproject.core.data.remote.senior import com.android.mediproject.core.network.datasource.elderlycaution.ElderlyCautionDataSource import javax.inject.Inject diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/GetElderlyCautionUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/GetElderlyCautionUseCase.kt index be8cb1aee..6c97bb993 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/GetElderlyCautionUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/GetElderlyCautionUseCase.kt @@ -1,6 +1,6 @@ package com.android.mediproject.core.domain -import com.android.mediproject.core.data.remote.elderlycaution.ElderlyCautionRepository +import com.android.mediproject.core.data.remote.senior.ElderlyCautionRepository import com.android.mediproject.core.model.datagokr.durproduct.senior.ElderlyCautionDto import com.android.mediproject.core.model.datagokr.durproduct.senior.toElderlyCautionDto import javax.inject.Inject diff --git a/core/network/src/main/java/com/android/mediproject/core/network/ResponseWrapper.kt b/core/network/src/main/java/com/android/mediproject/core/network/ResponseWrapper.kt index ab9290f74..48225e6da 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/ResponseWrapper.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/ResponseWrapper.kt @@ -33,17 +33,8 @@ private inline fun String.parse(): Result = try { internal inline fun Response.onStringResponse(): Result> { return if (isSuccessful) { - body()?.parse()?.fold( - onSuccess = { final -> - final.toResult().fold( - onSuccess = { - Result.success(PairResponse(it, body()!!)) - }, - onFailure = { - Result.failure(it) - }, - ) - }, + body()?.parse()?.getOrNull()?.toResult()?.fold( + onSuccess = { Result.success(PairResponse(it, body()!!)) }, onFailure = { Result.failure(it) }, ) ?: Result.failure(Throwable("Response Body is Null")) } else { @@ -51,6 +42,11 @@ internal inline fun Response.onString } } +internal inline fun Response.onDataGokrResponse(): Result = + if (isSuccessful) body()?.toResult() ?: Result.failure(Throwable("Response Body is Null")) + else Result.failure(errorBody()?.string()?.let { Throwable(it) } ?: Throwable("Response Error")) + + internal data class PairResponse( val first: T, val second: E, diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurIngrDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurIngrDataSourceImpl.kt index ee3d56dfb..d66001eac 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurIngrDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurIngrDataSourceImpl.kt @@ -7,38 +7,31 @@ import com.android.mediproject.core.model.datagokr.duringr.pregnancy.DurIngrPreg import com.android.mediproject.core.model.datagokr.duringr.senior.DurIngrSeniorCautionResponse import com.android.mediproject.core.model.datagokr.duringr.specialtyagegroup.DurIngrSpecialtyAgeGroupTabooResponse import com.android.mediproject.core.network.module.datagokr.DurIngrInfoNetworkApi +import com.android.mediproject.core.network.onDataGokrResponse import javax.inject.Inject class DurIngrDataSourceImpl @Inject constructor( private val durIngrInfoNetworkApi: DurIngrInfoNetworkApi, ) : DurIngrDataSource { - override suspend fun getCombinationTabooInfo(ingrKorName: String?, ingrCode: String?): Result { - TODO("Not yet implemented") - } + override suspend fun getCombinationTabooInfo(ingrKorName: String?, ingrCode: String?): Result = + durIngrInfoNetworkApi.getCombinationTabooInfo(ingrKorName = ingrKorName, ingrCode = ingrCode).onDataGokrResponse() + + override suspend fun getSpecialtyAgeGroupTabooInfo(ingrName: String?, ingrCode: String?): Result = + durIngrInfoNetworkApi.getSpecialtyAgeGroupTabooInfo(ingrName = ingrName, ingrCode = ingrCode).onDataGokrResponse() - override suspend fun getSpecialtyAgeGroupTabooInfo(ingrName: String?, ingrCode: String?): Result { - TODO("Not yet implemented") - } + override suspend fun getPregnantWomanTabooInfo(ingrName: String?, ingrCode: String?): Result = + durIngrInfoNetworkApi.getPregnantWomanTabooInfo(ingrName = ingrName, ingrCode = ingrCode).onDataGokrResponse() - override suspend fun getPregnantWomanTabooInfo(ingrName: String?, ingrCode: String?): Result { - TODO("Not yet implemented") - } + override suspend fun getCapacityAttentionInfo(ingrName: String?, ingrCode: String?): Result = + durIngrInfoNetworkApi.getCapacityAttentionInfo(ingrName = ingrName, ingrCode = ingrCode).onDataGokrResponse() - override suspend fun getCapacityAttentionInfo(ingrName: String?, ingrCode: String?): Result { - TODO("Not yet implemented") - } + override suspend fun getDosingCautionInfo(ingrName: String?, ingrCode: String?): Result = + durIngrInfoNetworkApi.getDosingCautionInfo(ingrName = ingrName, ingrCode = ingrCode).onDataGokrResponse() - override suspend fun getDosingCautionInfo(ingrName: String?, ingrCode: String?): Result { - TODO("Not yet implemented") - } - - override suspend fun getSeniorCaution(ingrName: String?, ingrCode: String?): Result { - TODO("Not yet implemented") - } - - override suspend fun getEfficacyGroupDuplicationInfo(ingrName: String?, ingrCode: String?): Result { - TODO("Not yet implemented") - } + override suspend fun getSeniorCaution(ingrName: String?, ingrCode: String?): Result = + durIngrInfoNetworkApi.getSeniorCaution(ingrName = ingrName, ingrCode = ingrCode).onDataGokrResponse() + override suspend fun getEfficacyGroupDuplicationInfo(ingrName: String?, ingrCode: String?): Result = + durIngrInfoNetworkApi.getEfficacyGroupDuplicationInfo(ingrName = ingrName, ingrCode = ingrCode).onDataGokrResponse() } diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt index 5311593ad..fba98e108 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt @@ -10,81 +10,79 @@ import com.android.mediproject.core.model.datagokr.durproduct.productlist.DurPro import com.android.mediproject.core.model.datagokr.durproduct.senior.DurProductSeniorCautionResponse import com.android.mediproject.core.model.datagokr.durproduct.specialtyagegroup.DurProductSpecialtyAgeGroupTabooResponse import com.android.mediproject.core.network.module.datagokr.DurProductInfoNetworkApi +import com.android.mediproject.core.network.onDataGokrResponse import javax.inject.Inject class DurProductDataSourceImpl @Inject constructor( private val durProductInfoNetworkApi: DurProductInfoNetworkApi, ) : DurProductDataSource { - override suspend fun getDurProductList(itemName: String?, itemSeq: String?): Result { - TODO("Not yet implemented") - } + override suspend fun getDurProductList(itemName: String?, itemSeq: String?): Result = + durProductInfoNetworkApi.getDurProductList(itemName = itemName, itemSeq = itemSeq).onDataGokrResponse() - override suspend fun getSeniorCaution(itemName: String?, ingrCode: String?, itemSeq: String?): Result { - TODO("Not yet implemented") - } + override suspend fun getSeniorCaution(itemName: String?, ingrCode: String?, itemSeq: String?): Result = + durProductInfoNetworkApi.getSeniorCaution(itemName = itemName, ingrCode = ingrCode, itemSeq = itemSeq).onDataGokrResponse() override suspend fun getExReleaseTableSplitAttentionInfo( itemName: String?, entpName: String?, typeName: String?, itemSeq: String?, - ): Result { - TODO("Not yet implemented") - } + ): Result = + durProductInfoNetworkApi.getExReleaseTableSplitAttentionInfo(itemName = itemName, entpName = entpName, typeName = typeName, itemSeq = itemSeq) + .onDataGokrResponse() override suspend fun getEfficacyGroupDuplicationInfo( itemName: String?, ingrCode: String?, typeName: String?, itemSeq: String?, - ): Result { - TODO("Not yet implemented") - } + ): Result = + durProductInfoNetworkApi.getEfficacyGroupDuplicationInfo(itemName = itemName, ingrCode = ingrCode, typeName = typeName, itemSeq = itemSeq) + .onDataGokrResponse() override suspend fun getDosingCautionInfo( itemName: String?, ingrCode: String?, typeName: String?, itemSeq: String?, - ): Result { - TODO("Not yet implemented") - } + ): Result = + durProductInfoNetworkApi.getDosingCautionInfo(itemName = itemName, ingrCode = ingrCode, typeName = typeName, itemSeq = itemSeq) + .onDataGokrResponse() override suspend fun getCapacityAttentionInfo( itemName: String?, ingrCode: String?, typeName: String?, itemSeq: String?, - ): Result { - TODO("Not yet implemented") - } + ): Result = + durProductInfoNetworkApi.getCapacityAttentionInfo(itemName = itemName, ingrCode = ingrCode, typeName = typeName, itemSeq = itemSeq) + .onDataGokrResponse() override suspend fun getPregnantWomanTabooInfo( itemName: String?, ingrCode: String?, typeName: String?, itemSeq: String?, - ): Result { - TODO("Not yet implemented") - } + ): Result = + durProductInfoNetworkApi.getPregnantWomanTabooInfo(itemName = itemName, ingrCode = ingrCode, typeName = typeName, itemSeq = itemSeq) + .onDataGokrResponse() override suspend fun getSpecialtyAgeGroupTabooInfo( itemName: String?, ingrCode: String?, typeName: String?, itemSeq: String?, - ): Result { - TODO("Not yet implemented") - } + ): Result = + durProductInfoNetworkApi.getSpecialtyAgeGroupTabooInfo(itemName = itemName, ingrCode = ingrCode, typeName = typeName, itemSeq = itemSeq) + .onDataGokrResponse() override suspend fun getCombinationTabooInfo( itemName: String?, ingrCode: String?, typeName: String?, itemSeq: String?, - ): Result { - TODO("Not yet implemented") - } - + ): Result = + durProductInfoNetworkApi.getCombinationTabooInfo(itemName = itemName, ingrCode = ingrCode, typeName = typeName, itemSeq = itemSeq) + .onDataGokrResponse() } From 794f415d44e559f97abcb7029076b18929cd01de Mon Sep 17 00:00:00 2001 From: JSPark <48265129+pknujsp@users.noreply.github.com> Date: Wed, 26 Jul 2023 21:44:55 +0900 Subject: [PATCH 07/13] =?UTF-8?q?#194=20=EC=93=B0=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8A=94=20=EB=B3=80=EC=88=98=20=EC=82=AD=EC=A0=9C,?= =?UTF-8?q?=20DataGoKrBaseResponse.kt=20->=20DataGoKrResponse.kt=20?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD=ED=95=98=EB=A9=B4=EC=84=9C=20?= =?UTF-8?q?=EB=82=B4=EB=B6=80=20=EC=BD=94=EB=93=9C=20=EC=A0=95=EB=A6=AC,?= =?UTF-8?q?=20=EC=9D=B4=20=ED=81=B4=EB=9E=98=EC=8A=A4=EB=A5=BC=20=EC=83=81?= =?UTF-8?q?=EC=86=8D=EB=B0=9B=EB=8A=94=20=EB=AA=A8=EB=93=A0=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=EC=97=90=EC=84=9C=20body=EA=B5=AC=ED=98=84?= =?UTF-8?q?=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/android/mediproject/MainActivity.kt | 3 +- .../com/android/mediproject/MainViewModel.kt | 4 +- .../mediproject/core/common/CoroutineExt.kt | 9 - .../core/common/mapper/MedicineInfoMapper.kt | 34 +-- .../core/common/paging/PagingUtil.kt | 6 +- .../core/common/uiutil/EditableUtil.kt | 2 +- .../core/common/uiutil/Keyboard.kt | 6 +- .../common/uiutil/SystemBarColorAnalyzer.kt | 8 +- .../mediproject/core/common/util/AesCoder.kt | 8 +- .../core/common/util/KeepFragmentNavigator.kt | 36 ++-- .../core/common/util/UriBuilder.kt | 13 +- .../core/common/viewmodel/EventFlow.kt | 8 +- .../common/viewmodel/LifecycleExtension.kt | 4 +- core/common/src/main/res/values/navs.xml | 6 + .../data/dur/duringr/DurIngrRepository.kt | 4 + .../data/dur/duringr/DurIngrRepositoryImpl.kt | 8 + .../dur/durproduct/DurProductRepository.kt | 5 + .../durproduct/DurProductRepositoryImpl.kt | 45 ++++ .../adminaction/AdminActionRepository.kt | 4 +- .../adminaction/AdminActionRepositoryImpl.kt | 13 +- .../core/data/remote/di/RepositoryModule.kt | 17 +- .../core/data/remote/dur/DurRepository.kt | 10 - .../core/data/remote/dur/DurRepositoryImpl.kt | 19 -- .../GranuleIdentificationRepository.kt | 4 +- .../MedicineApprovalRepository.kt | 10 +- .../MedicineApprovalRepositoryImpl.kt | 7 +- .../RecallSuspensionRepository.kt | 12 +- .../RecallSuspensionRepositoryImpl.kt | 45 ++-- .../remote/senior/ElderlyCautionRepository.kt | 8 - .../senior/ElderlyCautionRepositoryImpl.kt | 12 -- .../data/remote/user/UserRepositoryImpl.kt | 16 +- .../mediproject/core/domain/GetDurUseCase.kt | 30 +-- .../core/domain/GetElderlyCautionUseCase.kt | 17 -- .../core/domain/GetFavoriteMedicineUseCase.kt | 18 +- .../domain/GetMedicineApprovalListUseCase.kt | 4 +- .../core/domain/GetMedicineDetailsUseCase.kt | 12 +- .../domain/GetRecallSuspensionInfoUseCase.kt | 47 ++--- .../core/domain/user/UserUseCase.kt | 52 +++-- ...oKrBaseResponse.kt => DataGoKrResponse.kt} | 16 +- .../core/model/ai/ClassificationResult.kt | 6 +- .../core/model/datagokr/DurType.kt | 6 + .../DurIngrCapacityAttentionResponse.kt | 88 ++++---- .../DurIngrCombinationTabooResponse.kt | 104 +++++----- .../dosing/DurIngrDosingCautionResponse.kt | 87 ++++---- ...DurIngrEfficacyGroupDuplicationResponse.kt | 85 ++++---- .../DurIngrPregnantWomanTabooResponse.kt | 86 ++++---- .../senior/DurIngrSeniorCautionResponse.kt | 81 ++++---- .../DurIngrSpecialtyAgeGroupTabooResponse.kt | 86 ++++---- .../DurProductCapacityAttentionResponse.kt | 109 +++++----- .../DurProductCombinationTabooResponse.kt | 195 +++++++++--------- .../dosing/DurProductDosingCautionResponse.kt | 106 +++++----- ...ProductEfficacyGroupDuplicationResponse.kt | 133 ++++++------ ...uctExReleaseTableSplitAttentionResponse.kt | 90 ++++---- .../DurProductPregnantWomanTabooResponse.kt | 111 +++++----- .../productlist/DurProductListResponse.kt | 122 +++++------ .../senior/DurProductSeniorCautionResponse.kt | 111 +++++----- ...urProductSpecialtyAgeGroupTabooResponse.kt | 109 +++++----- .../core/model/local/navargs/BaseNavArgs.kt | 1 - ...MedicineItemDto.kt => ApprovedMedicine.kt} | 11 +- .../MedicineApprovalListResponse.kt | 111 +++++----- ...edicineDetailInfo.kt => MedicineDetail.kt} | 4 +- .../MedicineDetailInfoResponse.kt | 195 +++++++++--------- .../adminaction/AdminActionListItemDto.kt | 2 +- .../adminaction/AdminActionListResponse.kt | 80 ++++--- .../granule/GranuleIdentificationInfoDto.kt | 2 +- .../GranuleIdentificationInfoResponse.kt | 157 +++++++------- ...onItemDto.kt => DetailRecallSuspension.kt} | 12 +- .../recall/DetailRecallSuspensionResponse.kt | 91 ++++---- ...sionListItemDto.kt => RecallSuspension.kt} | 6 +- .../recall/RecallSuspensionListResponse.kt | 66 +++--- .../core/network/ResponseWrapper.kt | 6 +- .../GranuleIdentificationDataSourceImpl.kt | 1 - .../MedicineApprovalDataSourceImpl.kt | 1 - .../MedicineApprovalListDataSourceImpl.kt | 29 +-- .../adminaction/AdminActionDataSourceImpl.kt | 1 - .../AdminActionListDataSourceImpl.kt | 37 ++-- .../RecallSuspensionDataSourceImpl.kt | 36 +--- .../RecallSuspensionListDataSourceImpl.kt | 43 ++-- .../datasource/user/UserDataSourceImpl.kt | 21 +- .../core/network/module/DataGoKrNetwork.kt | 17 +- .../core/network/module/NetworkModule.kt | 1 - .../mediproject/core/ui/base/BaseViewModel.kt | 4 +- .../camera/MedicinesDetectorFragment.kt | 2 +- .../confirmdialog/ConfirmDialogFragment.kt | 2 +- .../imagedialog/DetectedImageFragment.kt | 2 +- .../MedicineCommentsFragment.kt | 102 +++++---- .../mycommentslist/MyCommentsListFragment.kt | 3 +- .../mycommentslist/MyCommentsListViewModel.kt | 6 +- .../mediproject/feature/etc/EtcFragment.kt | 5 +- .../mediproject/feature/etc/EtcViewModel.kt | 6 +- .../FavoriteMedicineFragment.kt | 4 +- .../FavoriteMedicineViewModel.kt | 6 +- .../FavoriteMedicineMoreFragment.kt | 6 +- .../FavoriteMedicineMoreViewModel.kt | 4 +- .../FavoriteMeidicneMoreAdapter.kt | 0 .../mediproject/feature/home/HomeFragment.kt | 2 +- .../mediproject/feature/home/HomeViewModel.kt | 4 +- .../feature/intro/IntroFragment.kt | 2 +- .../feature/intro/IntroViewModel.kt | 4 +- .../feature/intro/LoginFragment.kt | 2 +- .../feature/intro/LoginViewModel.kt | 10 +- .../feature/intro/SignUpFragment.kt | 2 +- .../feature/intro/SignUpViewModel.kt | 4 +- .../host/MedicineBasicInfoViewModel.kt | 6 +- .../item/BaseMedicineInfoItemFragment.kt | 16 +- .../basicinfo/item/DosageInfoItemFragment.kt | 6 +- .../item/EfficacyEffectItemFragment.kt | 6 +- .../item/MedicineInfoItemFragment.kt | 6 +- .../medicine/granule/GranuleInfoFragment.kt | 14 +- .../medicine/main/MedicineInfoFragment.kt | 2 +- .../medicine/main/MedicineInfoViewModel.kt | 8 +- .../item/MedicinePrecautionsItemFragment.kt | 4 +- .../item/MedicineSafeUsageItemFragment.kt | 12 +- .../item/MedicineSafeUsageViewModel.kt | 25 +-- .../feature/mypage/MyPageFragment.kt | 4 +- .../feature/mypage/MyPageViewModel.kt | 4 +- .../MyPageMoreBottomSheetFragment.kt | 2 +- .../MyPageMoreBottomSheetViewModel.kt | 4 +- .../mypagemore/MyPageMoreDialogFragment.kt | 3 +- .../mypagemore/MyPageMoreDialogViewModel.kt | 4 +- .../mediproject/feature/news/NewsFragment.kt | 1 - .../news/adminaction/AdminActionScreen.kt | 19 +- .../recentpenaltylist/PenaltyListAdapter.kt | 14 +- .../RecentPenaltyListFragment.kt | 6 +- .../RecentPenaltyListViewModel.kt | 24 ++- .../DetailRecallSuspensionScreen.kt | 27 ++- .../DetailRecallSuspensionViewModel.kt | 21 +- .../RecallSuspensionScreen.kt | 27 ++- .../RecallSuspensionViewModel.kt | 8 +- .../feature/search/SearchMedicinesFragment.kt | 2 +- .../RecentSearchListFragment.kt | 26 +-- .../search/result/ai/AiResultAdapter.kt | 4 +- .../result/ai/AiSearchResultFragment.kt | 6 +- .../result/ai/AiSearchResultViewModel.kt | 20 +- .../result/manual/ApprovedMedicinesAdapter.kt | 16 +- .../manual/ManualSearchResultFragment.kt | 4 +- .../manual/ManualSearchResultViewModel.kt | 10 +- .../src/main/res/layout/ai_medicine_item.xml | 10 +- .../res/layout/fragment_ai_search_result.xml | 4 +- .../main/res/layout/manual_medicine_item.xml | 4 +- 140 files changed, 1791 insertions(+), 1998 deletions(-) delete mode 100644 core/common/src/main/java/com/android/mediproject/core/common/CoroutineExt.kt create mode 100644 core/common/src/main/res/values/navs.xml create mode 100644 core/data/src/main/java/com/android/mediproject/core/data/dur/duringr/DurIngrRepository.kt create mode 100644 core/data/src/main/java/com/android/mediproject/core/data/dur/duringr/DurIngrRepositoryImpl.kt create mode 100644 core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepository.kt create mode 100644 core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepositoryImpl.kt delete mode 100644 core/data/src/main/java/com/android/mediproject/core/data/remote/dur/DurRepository.kt delete mode 100644 core/data/src/main/java/com/android/mediproject/core/data/remote/dur/DurRepositoryImpl.kt delete mode 100644 core/data/src/main/java/com/android/mediproject/core/data/remote/senior/ElderlyCautionRepository.kt delete mode 100644 core/data/src/main/java/com/android/mediproject/core/data/remote/senior/ElderlyCautionRepositoryImpl.kt delete mode 100644 core/domain/src/main/java/com/android/mediproject/core/domain/GetElderlyCautionUseCase.kt rename core/model/src/main/java/com/android/mediproject/core/model/{DataGoKrBaseResponse.kt => DataGoKrResponse.kt} (50%) create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/datagokr/DurType.kt rename core/model/src/main/java/com/android/mediproject/core/model/medicine/medicineapproval/{ApprovedMedicineItemDto.kt => ApprovedMedicine.kt} (91%) rename core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/{MedicineDetailInfo.kt => MedicineDetail.kt} (97%) rename core/model/src/main/java/com/android/mediproject/core/model/remote/recall/{DetailRecallSuspensionItemDto.kt => DetailRecallSuspension.kt} (85%) rename core/model/src/main/java/com/android/mediproject/core/model/remote/recall/{RecallSuspensionListItemDto.kt => RecallSuspension.kt} (84%) rename feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/{recyclerview => }/FavoriteMeidicneMoreAdapter.kt (100%) diff --git a/app/src/main/java/com/android/mediproject/MainActivity.kt b/app/src/main/java/com/android/mediproject/MainActivity.kt index 5e5864bf3..cd73f8f1a 100644 --- a/app/src/main/java/com/android/mediproject/MainActivity.kt +++ b/app/src/main/java/com/android/mediproject/MainActivity.kt @@ -24,7 +24,7 @@ import com.android.mediproject.core.ui.WindowViewModel import com.android.mediproject.core.ui.base.BaseActivity import com.android.mediproject.databinding.ActivityMainBinding import dagger.hilt.android.AndroidEntryPoint -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted import javax.inject.Inject @AndroidEntryPoint @@ -41,7 +41,6 @@ class MainActivity : BaseActivity(ActivityMa private lateinit var navController: NavController - @OptIn(NavigationUiSaveStateControl::class) override fun afterBinding() { systemBarController.init(this, window, this) systemBarColorAnalyzer.init(this, systemBarController, lifecycle) diff --git a/app/src/main/java/com/android/mediproject/MainViewModel.kt b/app/src/main/java/com/android/mediproject/MainViewModel.kt index 5b946cca0..72132a2fd 100644 --- a/app/src/main/java/com/android/mediproject/MainViewModel.kt +++ b/app/src/main/java/com/android/mediproject/MainViewModel.kt @@ -1,11 +1,11 @@ package com.android.mediproject -import MutableEventFlow +import com.android.mediproject.core.common.viewmodel.MutableEventFlow import android.content.res.Resources import androidx.annotation.ArrayRes import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.viewModelScope -import asEventFlow +import com.android.mediproject.core.common.viewmodel.asEventFlow import com.android.mediproject.core.domain.sign.GetAccountStateUseCase import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel diff --git a/core/common/src/main/java/com/android/mediproject/core/common/CoroutineExt.kt b/core/common/src/main/java/com/android/mediproject/core/common/CoroutineExt.kt deleted file mode 100644 index aae91441f..000000000 --- a/core/common/src/main/java/com/android/mediproject/core/common/CoroutineExt.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.android.mediproject.core.common - -import androidx.lifecycle.LifecycleOwner -import kotlinx.coroutines.flow.SharedFlow - - -inline fun SharedFlow.collectWithDialog(message: String, lifecycleOwner: LifecycleOwner, crossinline action: suspend (T) -> Unit) { - -} \ No newline at end of file diff --git a/core/common/src/main/java/com/android/mediproject/core/common/mapper/MedicineInfoMapper.kt b/core/common/src/main/java/com/android/mediproject/core/common/mapper/MedicineInfoMapper.kt index 61685fb97..ab215d5f4 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/mapper/MedicineInfoMapper.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/mapper/MedicineInfoMapper.kt @@ -13,7 +13,7 @@ import android.text.style.UnderlineSpan import androidx.core.content.ContextCompat import androidx.core.text.toSpanned import com.android.mediproject.core.common.R -import com.android.mediproject.core.model.medicine.medicinedetailinfo.MedicineDetailInfo +import com.android.mediproject.core.model.medicine.medicinedetailinfo.MedicineDetail import com.android.mediproject.core.model.remote.granule.GranuleIdentificationInfoDto import com.android.mediproject.core.model.util.XMLParsedResult import java.lang.ref.WeakReference @@ -36,9 +36,7 @@ class MedicineInfoMapper @Inject constructor() { * 용법용량 정보 데이터를 UI에 맞게 변환 */ fun toDosageInfo(xmlParsedResult: XMLParsedResult): Spanned { - val stringBuilder = WeakReference(StringBuilder()) - - return stringBuilder.get()?.let { builder -> + return WeakReference(StringBuilder()).get()?.let { builder -> xmlParsedResult.articleList.forEach { article -> builder.append("${article.title}
") article.contentList.forEach { content -> @@ -49,7 +47,6 @@ class MedicineInfoMapper @Inject constructor() { val result = Html.fromHtml(builder.toString(), Html.FROM_HTML_MODE_COMPACT) builder.clear() - stringBuilder.clear() result } ?: "".toSpanned() } @@ -58,9 +55,7 @@ class MedicineInfoMapper @Inject constructor() { * 효능효과 데이터를 UI에 맞게 변환 */ fun toEfficacyEffect(xmlParsedResult: XMLParsedResult): Spanned { - val stringBuilder = WeakReference(StringBuilder()) - - return stringBuilder.get()?.let { builder -> + return WeakReference(StringBuilder()).get()?.let { builder -> xmlParsedResult.articleList.forEach { article -> article.contentList.forEach { content -> builder.append("$content
") @@ -70,7 +65,6 @@ class MedicineInfoMapper @Inject constructor() { val result = Html.fromHtml(builder.toString(), Html.FROM_HTML_MODE_COMPACT) builder.clear() - stringBuilder.clear() result } ?: "".toSpanned() } @@ -78,23 +72,19 @@ class MedicineInfoMapper @Inject constructor() { /** * 의약품 기본 정보 데이터를 UI에 맞게 변환 */ - fun toMedicineInfo(medicineDetailInfo: MedicineDetailInfo): Spanned { - val stringBuilder = WeakReference(StringBuilder()) - - return stringBuilder.get()?.let { builder -> - with(medicineDetailInfo) { + fun toMedicineInfo(medicineDetail: MedicineDetail): Spanned { + return WeakReference(StringBuilder()).get()?.let { builder -> + with(medicineDetail) { builder.append("

의약품 이름: $itemName

").append("

의약품 영문 이름: $itemEnglishName

") .append("

의약품 시퀀스 번호: $itemSequence

").append("

의약품 허가 날짜: $itemPermitDate

") .append("

제조사 이름: $entpName

").append("

제조사 영문 이름: $entpEnglishName

") .append("

제조및수입사: $consignmentManufacturer

").append("

성분 이름: $ingredientName

") .append("

주성분의 영문 이름: $mainIngredientEnglish

").append("

총 함량: $totalContent

") - .append("

저장 방법: $storageMethod

").append("

유효 기간: $validTerm

") - .append("

패키지 단위: $packUnit

") + .append("

저장 방법: $storageMethod

").append("

유효 기간: $validTerm

").append("

패키지 단위: $packUnit

") } val result = Html.fromHtml(builder.toString(), Html.FROM_HTML_MODE_COMPACT) builder.clear() - stringBuilder.clear() result } ?: "".toSpanned() } @@ -173,18 +163,16 @@ class MedicineInfoMapper @Inject constructor() { ) } }.let { dataMap -> - val builder = WeakReference(StringBuilder()) - val result = builder.get()?.let { builder -> + val result = WeakReference(StringBuilder()).get()?.run { dataMap.forEach { (title, data) -> - builder.append("

$title

") + append("

$title

") data.forEach { (key, value) -> - builder.append("

$key: $value

") + append("

$key: $value

") } } - Html.fromHtml(builder.toString(), Html.FROM_HTML_MODE_COMPACT).toSpanned() + Html.fromHtml(toString(), Html.FROM_HTML_MODE_COMPACT).toSpanned() } ?: "".toSpanned() - builder.clear() dataMap.clear() result } diff --git a/core/common/src/main/java/com/android/mediproject/core/common/paging/PagingUtil.kt b/core/common/src/main/java/com/android/mediproject/core/common/paging/PagingUtil.kt index 13443de22..9269da187 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/paging/PagingUtil.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/paging/PagingUtil.kt @@ -19,9 +19,9 @@ fun PagingDataAdapter<*, *>.setOnStateChangedListener( msgTextView: TextView, listView: RecyclerView, progressBar: CircularProgressIndicator, - emptyMsg: String + emptyMsg: String, ) { - var isFirstLoad = true + var isFirstLoad: Boolean addLoadStateListener { loadState -> isFirstLoad = loadState.refresh is LoadState.Loading if (isFirstLoad) listView.scrollToPosition(0) @@ -33,4 +33,4 @@ fun PagingDataAdapter<*, *>.setOnStateChangedListener( msgTextView.isVisible = ((!isFirstLoad && loadState.source.refresh !is LoadState.Loading) && itemCount == 0) } -} \ No newline at end of file +} diff --git a/core/common/src/main/java/com/android/mediproject/core/common/uiutil/EditableUtil.kt b/core/common/src/main/java/com/android/mediproject/core/common/uiutil/EditableUtil.kt index 96bf6c8ec..06a2c7958 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/uiutil/EditableUtil.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/uiutil/EditableUtil.kt @@ -4,5 +4,5 @@ import android.text.Editable fun Editable?.isNotEmpty(): Boolean { - return this?.toString()?.length != (0 ?: false) + return this?.toString()?.length != 0 } diff --git a/core/common/src/main/java/com/android/mediproject/core/common/uiutil/Keyboard.kt b/core/common/src/main/java/com/android/mediproject/core/common/uiutil/Keyboard.kt index 557e7e4ea..ce918aa4b 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/uiutil/Keyboard.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/uiutil/Keyboard.kt @@ -9,13 +9,13 @@ import androidx.fragment.app.Fragment * @return Unit */ fun Fragment.hideKeyboard() { - activity?.also { it -> + activity?.also { // 현재 포커스가 있는 뷰를 찾는다. if (it.currentFocus != null) { // 키보드 숨기기 (it.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager).hideSoftInputFromWindow( - it.currentFocus?.windowToken, InputMethodManager.HIDE_NOT_ALWAYS + it.currentFocus?.windowToken, InputMethodManager.HIDE_NOT_ALWAYS, ) } } -} \ No newline at end of file +} diff --git a/core/common/src/main/java/com/android/mediproject/core/common/uiutil/SystemBarColorAnalyzer.kt b/core/common/src/main/java/com/android/mediproject/core/common/uiutil/SystemBarColorAnalyzer.kt index 08869f180..f96315a8c 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/uiutil/SystemBarColorAnalyzer.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/uiutil/SystemBarColorAnalyzer.kt @@ -86,12 +86,11 @@ class SystemBarColorAnalyzer @Inject constructor() { } private suspend fun startConvert(): Pair { - val start = System.currentTimeMillis() val statusBarBitmap = Bitmap.createBitmap(decorView.width, statusBarHeight, Bitmap.Config.ARGB_8888) val navigationBarBitmap = Bitmap.createBitmap(decorView.width, navigationBarHeight, Bitmap.Config.ARGB_8888) - val statusBarCopyResult = pixelCopy(Rect(0, 0, decorView.width, statusBarHeight), statusBarBitmap) - val navBarCopyResult = pixelCopy(Rect(0, decorView.height - navigationBarHeight, decorView.width, decorView.height), navigationBarBitmap) + pixelCopy(Rect(0, 0, decorView.width, statusBarHeight), statusBarBitmap) + pixelCopy(Rect(0, decorView.height - navigationBarHeight, decorView.width, decorView.height), navigationBarBitmap) val statusBarColor = statusBarBitmap[10, 10].toColor() val navigationBarColor = navigationBarBitmap[10, 10].toColor() @@ -111,9 +110,6 @@ class SystemBarColorAnalyzer @Inject constructor() { window = activity.window lifecycle.addObserver( object : DefaultLifecycleObserver { - override fun onCreate(owner: LifecycleOwner) { - super.onCreate(owner) - } override fun onStart(owner: LifecycleOwner) { super.onStart(owner) diff --git a/core/common/src/main/java/com/android/mediproject/core/common/util/AesCoder.kt b/core/common/src/main/java/com/android/mediproject/core/common/util/AesCoder.kt index 6bc0c2f6a..975812674 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/util/AesCoder.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/util/AesCoder.kt @@ -12,7 +12,7 @@ import javax.inject.Singleton import kotlin.io.encoding.Base64 import kotlin.io.encoding.ExperimentalEncodingApi - +@Suppress("DEPRECATION") @Singleton class AesCoder @Inject constructor(@ApplicationContext context: Context) { private var secretKey: SecretKeySpec? = null @@ -26,12 +26,10 @@ class AesCoder @Inject constructor(@ApplicationContext context: Context) { ) else context.packageManager.getPackageInfo(context.packageName, 0) - var key: String? = "${packageInfo.firstInstallTime}".repeat(4).substring(0, 32) - key?.apply { + "${packageInfo.firstInstallTime}".repeat(4).substring(0, 32).run { secretKey = SecretKeySpec(toByteArray(charset("UTF-8")), "AES") ivParameterSpec = IvParameterSpec(encodeToByteArray(0, 16)) } - key = null } private fun createSecretKey(plainArray: CharArray): Pair { @@ -44,7 +42,7 @@ class AesCoder @Inject constructor(@ApplicationContext context: Context) { } if (extraLength > 0) { val extra = "5".toByte() - IntRange(0, extraLength - 1).forEachIndexed { index, i -> + IntRange(0, extraLength - 1).forEachIndexed { index, _ -> this[keyLength + index] = extra } } diff --git a/core/common/src/main/java/com/android/mediproject/core/common/util/KeepFragmentNavigator.kt b/core/common/src/main/java/com/android/mediproject/core/common/util/KeepFragmentNavigator.kt index dbd8ec8da..d909c21b4 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/util/KeepFragmentNavigator.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/util/KeepFragmentNavigator.kt @@ -50,7 +50,6 @@ class KeepFragmentNavigator( private val backStack get() = state.backStack private fun createFragmentTransaction( entry: NavBackStackEntry, - navOptions: NavOptions?, ): FragmentTransaction { val destination = entry.destination as Destination var className = destination.className @@ -151,7 +150,7 @@ class KeepFragmentNavigator( } if (!pop) { requireNotNull(entry) { - "The fragment " + fragment + " is unknown to the FragmentNavigator. " + "Please use the navigate() function to add fragments to the " + "FragmentNavigator managed FragmentManager." + "The fragment $fragment is unknown to the FragmentNavigator. Please use the navigate() function to add fragments to the FragmentNavigator managed FragmentManager." } } if (entry != null) { @@ -329,7 +328,7 @@ class KeepFragmentNavigator( state.pushWithTransition(entry) return } - val ft = createFragmentTransaction(entry, navOptions) + val ft = createFragmentTransaction(entry) if (!initialNavigation) { ft.addToBackStack(entry.id) @@ -367,7 +366,7 @@ class KeepFragmentNavigator( ) return } - val ft = createFragmentTransaction(backStackEntry, null) + val ft = createFragmentTransaction(backStackEntry) if (state.backStack.value.size > 1) { // If the Fragment to be replaced is on the FragmentManager's // back stack, a simple replace() isn't enough so we @@ -384,14 +383,14 @@ class KeepFragmentNavigator( state.onLaunchSingleTop(backStackEntry) } - public override fun onSaveState(): Bundle? { + override fun onSaveState(): Bundle? { if (savedIds.isEmpty()) { return null } return bundleOf(KEY_SAVED_IDS to ArrayList(savedIds)) } - public override fun onRestoreState(savedState: Bundle) { + override fun onRestoreState(savedState: Bundle) { val savedIds = savedState.getStringArrayList(KEY_SAVED_IDS) if (savedIds != null) { this.savedIds.clear() @@ -400,8 +399,7 @@ class KeepFragmentNavigator( } @NavDestination.ClassType(Fragment::class) - public open class Destination - public constructor(fragmentNavigator: Navigator) : NavDestination(fragmentNavigator) { + open class Destination(fragmentNavigator: Navigator) : NavDestination(fragmentNavigator) { /** * Construct a new fragment destination. This destination is not valid until you set the @@ -410,10 +408,10 @@ class KeepFragmentNavigator( * @param navigatorProvider The [NavController] which this destination * will be associated with. */ - public constructor(navigatorProvider: NavigatorProvider) : this(navigatorProvider.getNavigator(KeepFragmentNavigator::class.java)) + constructor(navigatorProvider: NavigatorProvider) : this(navigatorProvider.getNavigator(KeepFragmentNavigator::class.java)) @CallSuper - public override fun onInflate(context: Context, attrs: AttributeSet) { + override fun onInflate(context: Context, attrs: AttributeSet) { super.onInflate(context, attrs) context.resources.obtainAttributes(attrs, R.styleable.KeepFragmentNavigator).use { array -> val className = array.getString(R.styleable.KeepFragmentNavigator_android_name) @@ -427,7 +425,7 @@ class KeepFragmentNavigator( * destination * @return this [Destination] */ - public fun setClassName(className: String): Destination { + fun setClassName(className: String): Destination { _className = className return this } @@ -439,13 +437,13 @@ class KeepFragmentNavigator( * * @throws IllegalStateException when no Fragment class was set. */ - public val className: String + val className: String get() { checkNotNull(_className) { "Fragment class was not set" } return _className as String } - public override fun toString(): String { + override fun toString(): String { val sb = StringBuilder() sb.append(super.toString()) sb.append(" class=") @@ -472,21 +470,21 @@ class KeepFragmentNavigator( /** * Extras that can be passed to FragmentNavigator to enable Fragment specific behavior */ - public class Extras internal constructor(sharedElements: Map) : Navigator.Extras { + class Extras internal constructor(sharedElements: Map) : Navigator.Extras { private val _sharedElements = LinkedHashMap() /** * The map of shared elements associated with these Extras. The returned map * is an [unmodifiable][Map] copy of the underlying map and should be treated as immutable. */ - public val sharedElements: Map + val sharedElements: Map get() = _sharedElements.toMap() /** * Builder for constructing new [Extras] instances. The resulting instances are * immutable. */ - public class Builder { + class Builder { private val _sharedElements = LinkedHashMap() /** @@ -496,7 +494,7 @@ class KeepFragmentNavigator( * @param sharedElements Shared element pairs to add * @return this [Builder] */ - public fun addSharedElements(sharedElements: Map): Builder { + fun addSharedElements(sharedElements: Map): Builder { for ((view, name) in sharedElements) { addSharedElement(view, name) } @@ -514,7 +512,7 @@ class KeepFragmentNavigator( * @return this [Builder] * @see FragmentTransaction.addSharedElement */ - public fun addSharedElement(sharedElement: View, name: String): Builder { + fun addSharedElement(sharedElement: View, name: String): Builder { _sharedElements[sharedElement] = name return this } @@ -524,7 +522,7 @@ class KeepFragmentNavigator( * * @return An immutable [Extras] instance. */ - public fun build(): Extras { + fun build(): Extras { return Extras(_sharedElements) } } diff --git a/core/common/src/main/java/com/android/mediproject/core/common/util/UriBuilder.kt b/core/common/src/main/java/com/android/mediproject/core/common/util/UriBuilder.kt index 5ae76c1bc..5ba6ad205 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/util/UriBuilder.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/util/UriBuilder.kt @@ -70,7 +70,7 @@ private fun toBaseUri(deepLinkUrl: String, parameter: Map): Uri = * @param parameter DeepLink에 들어갈 파라미터 */ fun NavController.navigateByDeepLink( - deepLinkUrl: String, parameter: BaseNavArgs, navOptions: NavOptions? = null + deepLinkUrl: String, parameter: BaseNavArgs, navOptions: NavOptions? = null, ) { val parameterMap = parameter.toMap() toQueryUri(deepLinkUrl, parameterMap).also { finalUri -> @@ -88,8 +88,10 @@ fun NavController.navigateByDeepLink( else -> NavType.ReferenceType } - deepLinkMatch.destination.addArgument(key, - NavArgument.Builder().setType(navType).setIsNullable(true).setDefaultValue(value).build()) + deepLinkMatch.destination.addArgument( + key, + NavArgument.Builder().setType(navType).setIsNullable(true).setDefaultValue(value).build(), + ) } } } @@ -99,7 +101,7 @@ fun NavController.navigateByDeepLink( fun NavController.deepNavigate( - deepLinkUrl: String, parameter: BaseNavArgs, navOptions: NavOptions? = null + deepLinkUrl: String, parameter: BaseNavArgs, navOptions: NavOptions? = null, ) { val parameterMap = parameter.toMap() @@ -121,7 +123,6 @@ fun NavController.deepNavigate( inline fun NavDestination.setArguments(navArgs: N) { navArgs.toMap().forEach { (key, value) -> - if (value == null) return@forEach val navType: NavType = when (value) { is String -> NavType.StringType is Int -> NavType.IntType @@ -146,4 +147,4 @@ inline fun Fragment.navArgs(): NavArgsLazy : EventFlow, FlowCollector @Suppress("FunctionName") fun MutableEventFlow( - replay: Int = EventFlow.DEFAULT_REPLAY + replay: Int = EventFlow.DEFAULT_REPLAY, ): MutableEventFlow = EventFlowImpl(replay) fun MutableEventFlow.asEventFlow(): EventFlow = ReadOnlyEventFlow(this) @@ -24,7 +26,7 @@ fun MutableEventFlow.asEventFlow(): EventFlow = ReadOnlyEventFlow(this private class ReadOnlyEventFlow(flow: EventFlow) : EventFlow by flow private class EventFlowImpl( - replay: Int + replay: Int, ) : MutableEventFlow { private val flow: MutableSharedFlow> = MutableSharedFlow(replay = replay) @@ -47,4 +49,4 @@ private class EventFlowSlot(val value: T) { private val consumed: AtomicBoolean = AtomicBoolean(false) fun markConsumed(): Boolean = consumed.getAndSet(true) -} \ No newline at end of file +} diff --git a/core/common/src/main/java/com/android/mediproject/core/common/viewmodel/LifecycleExtension.kt b/core/common/src/main/java/com/android/mediproject/core/common/viewmodel/LifecycleExtension.kt index b820413dd..a11315da3 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/viewmodel/LifecycleExtension.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/viewmodel/LifecycleExtension.kt @@ -1,3 +1,5 @@ +package com.android.mediproject.core.common.viewmodel + import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.lifecycleScope @@ -9,4 +11,4 @@ fun LifecycleOwner.repeatOnStarted(block: suspend CoroutineScope.() -> Unit) { lifecycleScope.launch { lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED, block) } -} \ No newline at end of file +} diff --git a/core/common/src/main/res/values/navs.xml b/core/common/src/main/res/values/navs.xml new file mode 100644 index 000000000..4140a0109 --- /dev/null +++ b/core/common/src/main/res/values/navs.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/core/data/src/main/java/com/android/mediproject/core/data/dur/duringr/DurIngrRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/dur/duringr/DurIngrRepository.kt new file mode 100644 index 000000000..2ce6f6348 --- /dev/null +++ b/core/data/src/main/java/com/android/mediproject/core/data/dur/duringr/DurIngrRepository.kt @@ -0,0 +1,4 @@ +package com.android.mediproject.core.data.dur.duringr + +interface DurIngrRepository { +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/dur/duringr/DurIngrRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/dur/duringr/DurIngrRepositoryImpl.kt new file mode 100644 index 000000000..2c0e76319 --- /dev/null +++ b/core/data/src/main/java/com/android/mediproject/core/data/dur/duringr/DurIngrRepositoryImpl.kt @@ -0,0 +1,8 @@ +package com.android.mediproject.core.data.dur.duringr + +import com.android.mediproject.core.network.datasource.dur.DurIngrDataSource +import javax.inject.Inject + +class DurIngrRepositoryImpl @Inject constructor( + durIngrDataSource: DurIngrDataSource, +) : DurIngrRepository {} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepository.kt new file mode 100644 index 000000000..913440ef7 --- /dev/null +++ b/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepository.kt @@ -0,0 +1,5 @@ +package com.android.mediproject.core.data.dur.durproduct + +interface DurProductRepository { + +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepositoryImpl.kt new file mode 100644 index 000000000..436a22c8d --- /dev/null +++ b/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepositoryImpl.kt @@ -0,0 +1,45 @@ +package com.android.mediproject.core.data.dur.durproduct + +import com.android.mediproject.core.model.DataGoKrResponse +import com.android.mediproject.core.model.datagokr.DurType +import com.android.mediproject.core.network.datasource.dur.DurProductDataSource +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.channelFlow +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +import javax.inject.Inject + +class DurProductRepositoryImpl @Inject constructor( + private val durProductDataSource: DurProductDataSource, +) : DurProductRepository { + + private val mapCacheMaxSize = 5 + private val _durProductCacheMap = mutableMapOf>>() + private val durProductCacheMap = _durProductCacheMap.toMap() + private val mutex = Mutex() + + fun hasDur(itemName: String?, itemSeq: String?): Flow>> = channelFlow { + val response = durProductDataSource.getDurProductList(itemName = itemName, itemSeq = itemSeq) + response.onSuccess { + if (it.body.items.isNotEmpty()) { + val durTypeList = it.body.items.map { item -> DurType.valueOf(item.typeName) } + send(Result.success(durTypeList)) + } else { + send(Result.failure(Throwable("No Dur"))) + } + }.onFailure { + send(Result.failure(it)) + } + } + + fun durList(itemName: String?, itemSeq: String?): Flow>> = channelFlow { + + } + + private suspend fun cache(key: String, durType: DurType, response: DataGoKrResponse<*>) { + mutex.withLock { + if (_durProductCacheMap.size > mapCacheMaxSize) _durProductCacheMap.remove(_durProductCacheMap.keys.first()) + _durProductCacheMap[key] = _durProductCacheMap[key]?.plus(durType to response) ?: mapOf(durType to response) + } + } +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/adminaction/AdminActionRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/adminaction/AdminActionRepository.kt index ae441037e..b75364999 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/adminaction/AdminActionRepository.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/remote/adminaction/AdminActionRepository.kt @@ -6,6 +6,6 @@ import kotlinx.coroutines.flow.Flow interface AdminActionRepository { suspend fun getAdminActionList( - ): Flow> + ): Flow> -} \ No newline at end of file +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/adminaction/AdminActionRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/adminaction/AdminActionRepositoryImpl.kt index 7b2878ec0..f980f67f4 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/adminaction/AdminActionRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/remote/adminaction/AdminActionRepositoryImpl.kt @@ -12,9 +12,12 @@ import javax.inject.Inject class AdminActionRepositoryImpl @Inject constructor( private val adminActionListDataSource: AdminActionListDataSourceImpl, ) : AdminActionRepository { - override suspend fun getAdminActionList(): Flow> = - Pager(config = PagingConfig(pageSize = DATA_GO_KR_PAGE_SIZE, prefetchDistance = 5), pagingSourceFactory = { - adminActionListDataSource - }).flow + override suspend fun getAdminActionList(): Flow> = + Pager( + config = PagingConfig(pageSize = DATA_GO_KR_PAGE_SIZE, prefetchDistance = 5), + pagingSourceFactory = { + adminActionListDataSource + }, + ).flow -} \ No newline at end of file +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/di/RepositoryModule.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/di/RepositoryModule.kt index 85fde1a13..b9ca05050 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/di/RepositoryModule.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/remote/di/RepositoryModule.kt @@ -2,14 +2,14 @@ package com.android.mediproject.core.data.remote.di import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers +import com.android.mediproject.core.data.dur.duringr.DurIngrRepository +import com.android.mediproject.core.data.dur.duringr.DurIngrRepositoryImpl +import com.android.mediproject.core.data.dur.durproduct.DurProductRepository +import com.android.mediproject.core.data.dur.durproduct.DurProductRepositoryImpl import com.android.mediproject.core.data.remote.adminaction.AdminActionRepository import com.android.mediproject.core.data.remote.adminaction.AdminActionRepositoryImpl import com.android.mediproject.core.data.remote.comments.CommentsRepository import com.android.mediproject.core.data.remote.comments.CommentsRepositoryImpl -import com.android.mediproject.core.data.remote.dur.DurRepository -import com.android.mediproject.core.data.remote.dur.DurRepositoryImpl -import com.android.mediproject.core.data.remote.senior.ElderlyCautionRepository -import com.android.mediproject.core.data.remote.senior.ElderlyCautionRepositoryImpl import com.android.mediproject.core.data.remote.favoritemedicine.FavoriteMedicineRepository import com.android.mediproject.core.data.remote.favoritemedicine.FavoriteMedicineRepositoryImpl import com.android.mediproject.core.data.remote.granule.GranuleIdentificationRepository @@ -34,8 +34,8 @@ import com.android.mediproject.core.database.cache.manager.MedicineDataCacheMana import com.android.mediproject.core.database.searchhistory.SearchHistoryDao import com.android.mediproject.core.datastore.AppDataStore import com.android.mediproject.core.network.datasource.comments.CommentsDataSource +import com.android.mediproject.core.network.datasource.dur.DurIngrDataSource import com.android.mediproject.core.network.datasource.dur.DurProductDataSource -import com.android.mediproject.core.network.datasource.elderlycaution.ElderlyCautionDataSource import com.android.mediproject.core.network.datasource.favoritemedicine.FavoriteMedicineDataSource import com.android.mediproject.core.network.datasource.granule.GranuleIdentificationDataSource import com.android.mediproject.core.network.datasource.medicineapproval.MedicineApprovalDataSource @@ -100,13 +100,12 @@ object RepositoryModule { @Provides @Singleton - fun providesElderlyCautionRepository(elderlyCautionDataSource: ): ElderlyCautionRepository = - ElderlyCautionRepositoryImpl(elderlyCautionDataSource) + fun providesDurProductRepository(durProductDataSource: DurProductDataSource): DurProductRepository = + DurProductRepositoryImpl(durProductDataSource) @Provides @Singleton - fun providesDurRepository(durProductDataSource: DurProductDataSource): DurRepository = DurRepositoryImpl(durProductDataSource) - + fun providesDurIngrRepository(durIngrDataSource: DurIngrDataSource): DurIngrRepository = DurIngrRepositoryImpl(durIngrDataSource) @Provides @Singleton diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/dur/DurRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/dur/DurRepository.kt deleted file mode 100644 index 95b2b2dde..000000000 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/dur/DurRepository.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.android.mediproject.core.data.remote.dur - -import kotlinx.coroutines.flow.Flow - -interface DurRepository { - suspend fun getDur( - itemName: String?, - itemSeq: String?, - ): Flow> -} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/dur/DurRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/dur/DurRepositoryImpl.kt deleted file mode 100644 index f23455aa0..000000000 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/dur/DurRepositoryImpl.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.android.mediproject.core.data.remote.dur - -import com.android.mediproject.core.network.datasource.dur.DurProductDataSource -import kotlinx.coroutines.flow.channelFlow -import kotlinx.coroutines.flow.collectLatest -import kotlinx.coroutines.flow.map -import javax.inject.Inject - -class DurRepositoryImpl @Inject constructor( - private val dataSource: DurProductDataSource, -) : DurRepository { - override suspend fun getDur(itemName: String?, itemSeq: String?) = channelFlow { - dataSource.getDur(itemName = itemName, itemSeq = itemSeq).map { result -> - result.fold(onSuccess = { Result.success(it.body.items.first()) }, onFailure = { Result.failure(it) }) - }.collectLatest { - send(it) - } - } -} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/granule/GranuleIdentificationRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/granule/GranuleIdentificationRepository.kt index dba517bac..a65b153a0 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/granule/GranuleIdentificationRepository.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/remote/granule/GranuleIdentificationRepository.kt @@ -8,5 +8,5 @@ interface GranuleIdentificationRepository { itemName: String?, entpName: String?, itemSeq: String?, - ): Flow> -} \ No newline at end of file + ): Flow> +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/medicineapproval/MedicineApprovalRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/medicineapproval/MedicineApprovalRepository.kt index 9d51c5ccb..b6f10c453 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/medicineapproval/MedicineApprovalRepository.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/remote/medicineapproval/MedicineApprovalRepository.kt @@ -1,7 +1,7 @@ package com.android.mediproject.core.data.remote.medicineapproval import androidx.paging.PagingData -import com.android.mediproject.core.model.medicine.medicineapproval.Item +import com.android.mediproject.core.model.medicine.medicineapproval.MedicineApprovalListResponse import com.android.mediproject.core.model.medicine.medicinedetailinfo.MedicineDetailInfoResponse import kotlinx.coroutines.flow.Flow @@ -10,8 +10,8 @@ interface MedicineApprovalRepository { itemName: String?, entpName: String?, medicationType: String?, - ): Flow> + ): Flow> - fun getMedicineDetailInfo(itemName: String): Flow> - fun getMedicineDetailInfoByItemSeq(itemSeqs: List): Flow>> -} \ No newline at end of file + fun getMedicineDetailInfo(itemName: String): Flow> + fun getMedicineDetailInfoByItemSeq(itemSeqs: List): Flow>> +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/medicineapproval/MedicineApprovalRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/medicineapproval/MedicineApprovalRepositoryImpl.kt index 2e3230f86..9a0340398 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/medicineapproval/MedicineApprovalRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/remote/medicineapproval/MedicineApprovalRepositoryImpl.kt @@ -7,7 +7,7 @@ import com.android.mediproject.core.common.DATA_GO_KR_PAGE_SIZE import com.android.mediproject.core.data.search.SearchHistoryRepository import com.android.mediproject.core.database.cache.manager.MedicineDataCacheManager import com.android.mediproject.core.database.searchhistory.SearchHistoryDto -import com.android.mediproject.core.model.medicine.medicineapproval.Item +import com.android.mediproject.core.model.medicine.medicineapproval.MedicineApprovalListResponse import com.android.mediproject.core.model.medicine.medicinedetailinfo.MedicineDetailInfoResponse import com.android.mediproject.core.network.datasource.medicineapproval.MedicineApprovalDataSource import com.android.mediproject.core.network.datasource.medicineapproval.MedicineApprovalListDataSourceImpl @@ -34,7 +34,8 @@ class MedicineApprovalRepositoryImpl @Inject constructor( * @param entpName 업체명 * */ - override fun getMedicineApprovalList(itemName: String?, entpName: String?, medicationType: String?): Flow> { + override fun getMedicineApprovalList(itemName: String?, entpName: String?, medicationType: String?): + Flow> { searchHistoryRepository.insertSearchHistory(SearchHistoryDto(itemName ?: entpName!!)) return Pager( config = PagingConfig(pageSize = DATA_GO_KR_PAGE_SIZE, prefetchDistance = 5), @@ -45,7 +46,7 @@ class MedicineApprovalRepositoryImpl @Inject constructor( } - override fun getMedicineDetailInfo(itemName: String): Flow> = + override fun getMedicineDetailInfo(itemName: String): Flow> = medicineApprovalDataSource.getMedicineDetailInfo(itemName).map { result -> result.fold( onSuccess = { diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/recallsuspension/RecallSuspensionRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/recallsuspension/RecallSuspensionRepository.kt index ab3846d6f..4b9a7bae0 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/recallsuspension/RecallSuspensionRepository.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/remote/recallsuspension/RecallSuspensionRepository.kt @@ -7,13 +7,13 @@ import kotlinx.coroutines.flow.Flow interface RecallSuspensionRepository { fun getRecallDisposalList( - ): Flow> + ): Flow> suspend fun getRecentRecallDisposalList( - pageNo: Int = 1, numOfRows: Int = 15 - ): Result> + pageNo: Int = 1, numOfRows: Int = 15, + ): Result> fun getDetailRecallSuspension( - company: String?, product: String? - ): Flow> -} \ No newline at end of file + company: String?, product: String?, + ): Flow> +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/recallsuspension/RecallSuspensionRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/recallsuspension/RecallSuspensionRepositoryImpl.kt index 9ce5abc4a..29397f348 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/recallsuspension/RecallSuspensionRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/remote/recallsuspension/RecallSuspensionRepositoryImpl.kt @@ -17,33 +17,36 @@ class RecallSuspensionRepositoryImpl @Inject constructor( private val recallSuspensionListDataSource: RecallSuspensionListDataSourceImpl, ) : RecallSuspensionRepository { - override fun getRecallDisposalList(): Flow> = - Pager(config = PagingConfig(pageSize = DATA_GO_KR_PAGE_SIZE), pagingSourceFactory = { + override fun getRecallDisposalList(): Flow> = Pager( + config = PagingConfig(pageSize = DATA_GO_KR_PAGE_SIZE), + pagingSourceFactory = { recallSuspensionListDataSource - }).flow + }, + ).flow override suspend fun getRecentRecallDisposalList( - pageNo: Int, numOfRows: Int - ): Result> = - recallSuspensionDataSource.getRecallSuspensionList( - pageNo, numOfRows - ).map { - it.body.items.map { item -> - item.item - } + pageNo: Int, numOfRows: Int, + ): Result> = recallSuspensionDataSource.getRecallSuspensionList( + pageNo, numOfRows, + ).map { + it.body.items.map { item -> + item.item } + } override fun getDetailRecallSuspension( - company: String?, product: String? - ): Flow> = - recallSuspensionDataSource.getDetailRecallSuspensionInfo( - company = company, product = product - ).map { result -> - result.fold(onSuccess = { + company: String?, product: String?, + ): Flow> = recallSuspensionDataSource.getDetailRecallSuspensionInfo( + company = company, product = product, + ).map { result -> + result.fold( + onSuccess = { Result.success(it.body.items.first().item) - }, onFailure = { + }, + onFailure = { Result.failure(it) - }) - } + }, + ) + } -} \ No newline at end of file +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/senior/ElderlyCautionRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/senior/ElderlyCautionRepository.kt deleted file mode 100644 index ac76478d3..000000000 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/senior/ElderlyCautionRepository.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.android.mediproject.core.data.remote.senior - -interface ElderlyCautionRepository { - suspend fun getElderlyCaution( - itemName: String?, - itemSeq: String?, - ): Result -} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/senior/ElderlyCautionRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/senior/ElderlyCautionRepositoryImpl.kt deleted file mode 100644 index 27649a058..000000000 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/senior/ElderlyCautionRepositoryImpl.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.android.mediproject.core.data.remote.senior - -import com.android.mediproject.core.network.datasource.elderlycaution.ElderlyCautionDataSource -import javax.inject.Inject - -class ElderlyCautionRepositoryImpl @Inject constructor(private val dataSource: ElderlyCautionDataSource) : ElderlyCautionRepository { - - override suspend fun getElderlyCaution(itemName: String?, itemSeq: String?): Result = - dataSource.getElderlyCaution(itemName = itemName, itemSeq = itemSeq).map { - it.body.items.first() - } -} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/user/UserRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/user/UserRepositoryImpl.kt index 7ba371d6a..48307841d 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/user/UserRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/remote/user/UserRepositoryImpl.kt @@ -17,23 +17,23 @@ class UserRepositoryImpl @Inject constructor(private val userDataSource: UserDat UserRepository { override suspend fun changeNickname(changeNicknameParameter: ChangeNicknameParameter): Flow> = channelFlow { - userDataSource.changeNickname(changeNicknameParameter).map { - it.fold(onSuccess = { Result.success(it) }, onFailure = { Result.failure(it) }) + userDataSource.changeNickname(changeNicknameParameter).map { result -> + result.fold(onSuccess = { Result.success(it) }, onFailure = { Result.failure(it) }) }.collectLatest { trySend(it) } } override suspend fun changePassword(changePasswordParamter: ChangePasswordParamter): Flow> = channelFlow { - userDataSource.changePassword(changePasswordParamter).map { - it.fold(onSuccess = { Result.success(it) }, onFailure = { Result.failure(it) }) + userDataSource.changePassword(changePasswordParamter).map { result -> + result.fold(onSuccess = { Result.success(it) }, onFailure = { Result.failure(it) }) }.collectLatest { trySend(it) } } override suspend fun withdrawal(): Flow> = channelFlow { Log.d("wap", "UserRepository : withdrawal()") - userDataSource.withdrawal().map { - Log.d("wap", "UserRepository : withdrawal()"+it.toString()) - it.fold(onSuccess = { Result.success(it) }, onFailure = { Result.failure(it) }) + userDataSource.withdrawal().map { result -> + Log.d("wap", "UserRepository : withdrawal()$result") + result.fold(onSuccess = { Result.success(it) }, onFailure = { Result.failure(it) }) }.collectLatest { trySend(it) } } -} \ No newline at end of file +} diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/GetDurUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/GetDurUseCase.kt index 89ad2a224..74da00d3e 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/GetDurUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/GetDurUseCase.kt @@ -1,29 +1,13 @@ package com.android.mediproject.core.domain -import com.android.mediproject.core.data.remote.dur.DurRepository -import com.android.mediproject.core.model.datagokr.durproduct.productlist.toDto -import kotlinx.coroutines.flow.channelFlow -import kotlinx.coroutines.flow.collectLatest -import kotlinx.coroutines.flow.map +import com.android.mediproject.core.data.dur.durproduct.DurProductRepository import javax.inject.Inject +import javax.inject.Singleton -class GetDurUseCase @Inject constructor(private val durRepository: DurRepository) { +@Singleton +class GetDurUseCase @Inject constructor( + private val durProductRepository: DurProductRepository, + private val durIngrRepository: DurProductRepository, +) { - suspend operator fun invoke( - itemName: String?, - itemSeq: String?, - ) = channelFlow { - durRepository.getDur(itemName, itemSeq).map { result -> - result.fold( - onSuccess = { - Result.success(it.toDto()) - }, - onFailure = { - Result.failure(it) - }, - ) - }.collectLatest { - send(it) - } - } } diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/GetElderlyCautionUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/GetElderlyCautionUseCase.kt deleted file mode 100644 index 6c97bb993..000000000 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/GetElderlyCautionUseCase.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.android.mediproject.core.domain - -import com.android.mediproject.core.data.remote.senior.ElderlyCautionRepository -import com.android.mediproject.core.model.datagokr.durproduct.senior.ElderlyCautionDto -import com.android.mediproject.core.model.datagokr.durproduct.senior.toElderlyCautionDto -import javax.inject.Inject - -class GetElderlyCautionUseCase @Inject constructor( - private val repository: ElderlyCautionRepository, -) { - - - suspend operator fun invoke( - itemName: String?, itemSeq: String?, - ): Result = repository.getElderlyCaution(itemName = itemName, itemSeq = itemSeq) - .fold(onSuccess = { Result.success(it.toElderlyCautionDto()) }, onFailure = { Result.failure(it) }) -} diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/GetFavoriteMedicineUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/GetFavoriteMedicineUseCase.kt index ea1ce188f..59aa0934b 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/GetFavoriteMedicineUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/GetFavoriteMedicineUseCase.kt @@ -16,16 +16,18 @@ class GetFavoriteMedicineUseCase @Inject constructor(private val favoriteMedicin suspend fun getFavoriteMedicineList() = channelFlow { favoriteMedicineRepository.getFavoriteMedicineList().map { result -> result.fold( - onSuccess = { Result.success(it.map { it.toFavoriteMedicineDto() }) }, - onFailure = { Result.failure(it) }) + onSuccess = { it -> Result.success(it.map { it.toFavoriteMedicineDto() }) }, + onFailure = { Result.failure(it) }, + ) }.collectLatest { trySend(it) } } suspend fun getFavoriteMedicineMoreList() = channelFlow { favoriteMedicineRepository.getFavoriteMedicineList().map { result -> result.fold( - onSuccess = { Result.success(it.map { it.toFavoriteMedicineMoreDto() }) }, - onFailure = { Result.failure(it) }) + onSuccess = { it -> Result.success(it.map { it.toFavoriteMedicineMoreDto() }) }, + onFailure = { Result.failure(it) }, + ) }.collectLatest { trySend(it) } } @@ -36,7 +38,8 @@ class GetFavoriteMedicineUseCase @Inject constructor(private val favoriteMedicin val result = addFavoriteMedicineResponseResult.fold( onSuccess = { Result.success(Unit) }, - onFailure = { Result.failure(it) }) + onFailure = { Result.failure(it) }, + ) trySend(result) } } else { @@ -45,7 +48,8 @@ class GetFavoriteMedicineUseCase @Inject constructor(private val favoriteMedicin val result = deleteFavoriteMedicineResponseResult.fold( onSuccess = { Result.success(Unit) }, - onFailure = { Result.failure(it) }) + onFailure = { Result.failure(it) }, + ) trySend(result) } } @@ -53,4 +57,4 @@ class GetFavoriteMedicineUseCase @Inject constructor(private val favoriteMedicin fun checkFavoriteMedicine(medicineId: Long): Flow> = favoriteMedicineRepository.checkFavoriteMedicine(medicineId) -} \ No newline at end of file +} diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/GetMedicineApprovalListUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/GetMedicineApprovalListUseCase.kt index e41357038..5c9d2c6e6 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/GetMedicineApprovalListUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/GetMedicineApprovalListUseCase.kt @@ -3,7 +3,7 @@ package com.android.mediproject.core.domain import androidx.paging.map import com.android.mediproject.core.data.remote.medicineapproval.MedicineApprovalRepository import com.android.mediproject.core.model.constants.MedicationType -import com.android.mediproject.core.model.medicine.medicineapproval.toDto +import com.android.mediproject.core.model.medicine.medicineapproval.toApprovedMedicine import com.android.mediproject.core.model.requestparameters.ApprovalListSearchParameter import kotlinx.coroutines.flow.map import javax.inject.Inject @@ -26,7 +26,7 @@ class GetMedicineApprovalListUseCase @Inject constructor( }, ).map { pagingData -> pagingData.map { item -> - item.toDto() + item.toApprovedMedicine() } } } diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/GetMedicineDetailsUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/GetMedicineDetailsUseCase.kt index a548949a9..5295b19ec 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/GetMedicineDetailsUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/GetMedicineDetailsUseCase.kt @@ -4,9 +4,9 @@ import com.android.mediproject.core.data.remote.medicineapproval.MedicineApprova import com.android.mediproject.core.data.remote.medicineid.MedicineIdRepository import com.android.mediproject.core.database.cache.manager.MedicineDataCacheManager import com.android.mediproject.core.model.local.navargs.MedicineInfoArgs -import com.android.mediproject.core.model.medicine.medicinedetailinfo.MedicineDetailInfo +import com.android.mediproject.core.model.medicine.medicinedetailinfo.MedicineDetail import com.android.mediproject.core.model.medicine.medicinedetailinfo.cache.MedicineCacheEntity -import com.android.mediproject.core.model.medicine.medicinedetailinfo.toMedicineDetailInfoDto +import com.android.mediproject.core.model.medicine.medicinedetailinfo.toMedicineDetail import com.android.mediproject.core.model.requestparameters.GetMedicineIdParameter import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow @@ -22,7 +22,7 @@ class GetMedicineDetailsUseCase @Inject constructor( operator fun invoke( medicineInfoArgs: MedicineInfoArgs, - ): Flow> = channelFlow { + ): Flow> = channelFlow { medicineApprovalRepository.getMedicineDetailInfo( itemName = medicineInfoArgs.itemKorName, ).zip( @@ -53,7 +53,7 @@ class GetMedicineDetailsUseCase @Inject constructor( val medicineInfo = medicineInfoResult.fold( onSuccess = { item -> - Result.success(item.toMedicineDetailInfoDto(medicineId)) + Result.success(item.toMedicineDetail(medicineId)) }, onFailure = { Result.failure(it) @@ -74,13 +74,13 @@ class GetMedicineDetailsUseCase @Inject constructor( } - fun getMedicineDetailInfoByItemSeq(itemSeqs: List): Flow>> = channelFlow { + fun getMedicineDetailInfoByItemSeq(itemSeqs: List): Flow>> = channelFlow { medicineApprovalRepository.getMedicineDetailInfoByItemSeq(itemSeqs).collectLatest { medicineInfoResult -> val medicineInfo = medicineInfoResult.fold( onSuccess = { item -> Result.success( item.map { - it.toMedicineDetailInfoDto() + it.toMedicineDetail() }, ) }, diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/GetRecallSuspensionInfoUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/GetRecallSuspensionInfoUseCase.kt index f5d6f6247..b6c9e3874 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/GetRecallSuspensionInfoUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/GetRecallSuspensionInfoUseCase.kt @@ -3,9 +3,9 @@ package com.android.mediproject.core.domain import androidx.paging.PagingData import androidx.paging.map import com.android.mediproject.core.data.remote.recallsuspension.RecallSuspensionRepository -import com.android.mediproject.core.model.remote.recall.DetailRecallSuspensionItemDto -import com.android.mediproject.core.model.remote.recall.RecallSuspensionListItemDto -import com.android.mediproject.core.model.remote.recall.toRecallSuspensionItemDto +import com.android.mediproject.core.model.remote.recall.DetailRecallSuspension +import com.android.mediproject.core.model.remote.recall.RecallSuspension +import com.android.mediproject.core.model.remote.recall.toRecallSuspension import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import javax.inject.Inject @@ -15,35 +15,32 @@ class GetRecallSuspensionInfoUseCase @Inject constructor( ) { fun getRecallDisposalList( - ): Flow> = - recallSuspensionRepository.getRecallDisposalList().let { pager -> - pager.map { pagingData -> - pagingData.map { - it.toRecallSuspensionItemDto() - } + ): Flow> = recallSuspensionRepository.getRecallDisposalList().let { pager -> + pager.map { pagingData -> + pagingData.map { + it.toRecallSuspension() } } + } suspend fun getRecentRecallDisposalList( pageNo: Int = 1, numOfRows: Int = 15, - ): Result> = - recallSuspensionRepository.getRecentRecallDisposalList(pageNo, numOfRows).map { - it.map { item -> - item.toRecallSuspensionItemDto() - } + ): Result> = recallSuspensionRepository.getRecentRecallDisposalList(pageNo, numOfRows).map { + it.map { item -> + item.toRecallSuspension() } + } fun getDetailRecallSuspension( company: String?, product: String?, - ): Flow> = - recallSuspensionRepository.getDetailRecallSuspension(company, product).map { - it.fold( - onSuccess = { item -> - Result.success(item.toRecallSuspensionItemDto()) - }, - onFailure = { throwable -> - Result.failure(throwable) - }, - ) - } + ): Flow> = recallSuspensionRepository.getDetailRecallSuspension(company, product).map { + it.fold( + onSuccess = { item -> + Result.success(item.toRecallSuspension()) + }, + onFailure = { throwable -> + Result.failure(throwable) + }, + ) + } } diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/user/UserUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/user/UserUseCase.kt index a3705ec24..49781ec56 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/user/UserUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/user/UserUseCase.kt @@ -5,7 +5,6 @@ import com.android.mediproject.core.data.remote.sign.SignRepository import com.android.mediproject.core.data.remote.user.UserInfoRepository import com.android.mediproject.core.data.remote.user.UserRepository import com.android.mediproject.core.datastore.AppDataStore -import com.android.mediproject.core.domain.GetTokenUseCase import com.android.mediproject.core.model.requestparameters.ChangeNicknameParameter import com.android.mediproject.core.model.requestparameters.ChangePasswordParamter import com.android.mediproject.core.model.user.AccountState @@ -21,7 +20,7 @@ class UserUseCase @Inject constructor( private val appDataStore: AppDataStore, private val userRepository: UserRepository, private val getUserInfoRepository: UserInfoRepository, - private val signRepository: SignRepository + private val signRepository: SignRepository, ) { suspend operator fun invoke(): Flow = channelFlow { appDataStore.nickName.collect { nickName -> @@ -30,35 +29,46 @@ class UserUseCase @Inject constructor( } suspend fun changeNickname(changeNicknameParameter: ChangeNicknameParameter) = channelFlow { - userRepository.changeNickname(changeNicknameParameter).map { - it.fold(onSuccess = { - appDataStore.saveNickName(changeNicknameParameter.newNickname) - Result.success(it) - }, onFailure = { Result.failure(it) }) + userRepository.changeNickname(changeNicknameParameter).map { result -> + result.fold( + onSuccess = { + appDataStore.saveNickName(changeNicknameParameter.newNickname) + Result.success(it) + }, + onFailure = { Result.failure(it) }, + ) }.collectLatest { trySend(it) } } suspend fun changePassword(changePasswordParamter: ChangePasswordParamter) = channelFlow { val email = (getUserInfoRepository.myAccountInfo.value as AccountState.SignedIn).email.toCharArray() - userRepository.changePassword(changePasswordParamter.apply { - this.email = email - }).map { - it.fold(onSuccess = { - Result.success(it) - }, onFailure = { Result.failure(it) }) + userRepository.changePassword( + changePasswordParamter.apply { + this.email = email + }, + ).map { result -> + result.fold( + onSuccess = { + Result.success(it) + }, + onFailure = { Result.failure(it) }, + ) }.collectLatest { trySend(it) } } suspend fun withdrawal() = channelFlow { Log.d("wap", "UserUseCase : withdrawal()") - userRepository.withdrawal().map { - Log.d("wap", "UserUseCase : withdrawal()" + it.toString()) - it.fold(onSuccess = { - signRepository.signOut() - appDataStore.clearMyAccountInfo() - Result.success(it) - }, onFailure = { Result.failure(it) }) + userRepository.withdrawal().map { result -> + Log.d("wap", "UserUseCase : withdrawal()$result") + result.fold( + onSuccess = { + signRepository.signOut() + appDataStore.clearMyAccountInfo() + Result.success(it) + }, + onFailure = { Result.failure(it) }, + ) }.collectLatest { trySend(it) } } -} \ No newline at end of file +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/DataGoKrBaseResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/DataGoKrResponse.kt similarity index 50% rename from core/model/src/main/java/com/android/mediproject/core/model/DataGoKrBaseResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/DataGoKrResponse.kt index cad730760..92c99b892 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/DataGoKrBaseResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/DataGoKrResponse.kt @@ -4,8 +4,12 @@ import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -abstract class DataGoKrBaseResponse { +abstract class DataGoKrResponse { @SerialName("header") val header: Header? = null + @SerialName("body") val _body: Body? = null + + val body: Body + get() = _body!! @Serializable data class Header( @@ -13,9 +17,17 @@ abstract class DataGoKrBaseResponse { @SerialName("resultMsg") val resultMsg: String, // NORMAL SERVICE. ) + @Serializable + data class Body( + @SerialName("items") val items: List = listOf(), + @SerialName("numOfRows") val numOfRows: Int = 0, + @SerialName("pageNo") val pageNo: Int = 0, + @SerialName("totalCount") val totalCount: Int = 0, + ) + } -inline fun T.toResult(): Result = header?.run { +inline fun > T.toResult(): Result = header?.run { if (resultCode == "00") Result.success(this@toResult) else Result.failure(Throwable(resultMsg)) } ?: Result.failure(Throwable("Response Failed")) diff --git a/core/model/src/main/java/com/android/mediproject/core/model/ai/ClassificationResult.kt b/core/model/src/main/java/com/android/mediproject/core/model/ai/ClassificationResult.kt index 0489d39e9..c41fa8679 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/ai/ClassificationResult.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/ai/ClassificationResult.kt @@ -1,10 +1,10 @@ package com.android.mediproject.core.model.ai -import com.android.mediproject.core.model.medicine.medicinedetailinfo.MedicineDetailInfo +import com.android.mediproject.core.model.medicine.medicinedetailinfo.MedicineDetail data class ClassificationResult( val detectionObject: DetectionObject, val classificationRecognition: ClassificationRecognition, ) { - var medicineDetailInfo: MedicineDetailInfo? = null - var onClick: ((MedicineDetailInfo) -> Unit)? = null + var medicineDetail: MedicineDetail? = null + var onClick: ((MedicineDetail) -> Unit)? = null } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/DurType.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/DurType.kt new file mode 100644 index 000000000..2067f0f1e --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/DurType.kt @@ -0,0 +1,6 @@ +package com.android.mediproject.core.model.datagokr + +enum class DurType(val type: String) { + CAPACITY_ATTENTION("용량주의"), DOSING_CAUTION("투여기간주의"), EFFICACY_GROUP_DUPLICATION("효능군중복"), EX_RELEASE_TABLET_SPLIT_ATTENTION("서방정분할주의"), + COMBINATION_TABOO("병용금기"), SPECIALTY_AGE_GROUP_TABOO("특정연령대금기"), SENIOR_CAUTION("노인주의"), PREGNANT_WOMAN_TABOO("임부금기") +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/capacity/DurIngrCapacityAttentionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/capacity/DurIngrCapacityAttentionResponse.kt index 23bea603c..f89ebe019 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/capacity/DurIngrCapacityAttentionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/capacity/DurIngrCapacityAttentionResponse.kt @@ -1,61 +1,53 @@ package com.android.mediproject.core.model.datagokr.duringr.capacity -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurIngrCapacityAttentionResponse( - @SerialName("body") val body: Body = Body(), -) : DataGoKrBaseResponse() { +class DurIngrCapacityAttentionResponse : DataGoKrResponse() { + @Serializable - data class Body( - @SerialName("items") val items: List = listOf(), - @SerialName("numOfRows") val numOfRows: Int = 0, // 15 - @SerialName("pageNo") val pageNo: Int = 0, // 1 - @SerialName("totalCount") val totalCount: Int = 0, // 1 + data class Item( + @SerialName("item") val item: Item = Item(), ) { + + /** + * @param durSeq DUR번호 + * @param typeName DUR유형 + * @param mixType 복합제구분(단일/복합) + * @param ingrCode DUR성분코드 + * @param ingrName DUR성분명 + * @param ingrEngName DUR성분 영문명 + * @param mixIngr 복합제 + * @param oriIngr 관계성분 + * @param className 약효분류 + * @param formName 제형 + * @param maxQty 1일 최대용량 + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param delYn 상태(정상/삭제) + */ @Serializable data class Item( - @SerialName("item") val item: Item = Item(), - ) { - - /** - * @param durSeq DUR번호 - * @param typeName DUR유형 - * @param mixType 복합제구분(단일/복합) - * @param ingrCode DUR성분코드 - * @param ingrName DUR성분명 - * @param ingrEngName DUR성분 영문명 - * @param mixIngr 복합제 - * @param oriIngr 관계성분 - * @param className 약효분류 - * @param formName 제형 - * @param maxQty 1일 최대용량 - * @param notificationDate 고시일자 - * @param prohibitContent 금기내용 - * @param remark 비고 - * @param delYn 상태(정상/삭제) - */ - @Serializable - data class Item( - @SerialName("CLASS_NAME") val className: String = "", // [01120]최면진정제 - @SerialName("DEL_YN") val delYn: String = "", // 정상 - @SerialName("DUR_SEQ") val durSeq: String = "", // 636 - @SerialName("FORM_NAME") val formName: String = "", // 정제 - @SerialName("INGR_CODE") val ingrCode: String = "", // D000592 - @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Triazolam - @SerialName("INGR_NAME") val ingrName: String = "", // 트리아졸람 - @SerialName("MAX_QTY") val maxQty: String = "", // 0.25밀리그램 - @SerialName("MIX_INGR") val mixIngr: String = "", // 복합제 - @SerialName("MIX_TYPE") val mixType: String = "", // 단일 - @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20130703 - @SerialName("ORI_INGR") val oriIngr: String = "", // [I005603]트리아졸람/[M088380]트리아졸람 - @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 금기내용 - @SerialName("REMARK") val remark: String = "", // 비고 - @SerialName("TYPE_NAME") val typeName: String = "", // 용량주의 - ) - } + @SerialName("CLASS_NAME") val className: String = "", // [01120]최면진정제 + @SerialName("DEL_YN") val delYn: String = "", // 정상 + @SerialName("DUR_SEQ") val durSeq: String = "", // 636 + @SerialName("FORM_NAME") val formName: String = "", // 정제 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000592 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Triazolam + @SerialName("INGR_NAME") val ingrName: String = "", // 트리아졸람 + @SerialName("MAX_QTY") val maxQty: String = "", // 0.25밀리그램 + @SerialName("MIX_INGR") val mixIngr: String = "", // 복합제 + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20130703 + @SerialName("ORI_INGR") val oriIngr: String = "", // [I005603]트리아졸람/[M088380]트리아졸람 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 금기내용 + @SerialName("REMARK") val remark: String = "", // 비고 + @SerialName("TYPE_NAME") val typeName: String = "", // 용량주의 + ) } + } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/combination/DurIngrCombinationTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/combination/DurIngrCombinationTabooResponse.kt index 85496c983..f4f03a7a7 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/combination/DurIngrCombinationTabooResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/combination/DurIngrCombinationTabooResponse.kt @@ -1,71 +1,61 @@ package com.android.mediproject.core.model.datagokr.duringr.combination -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurIngrCombinationTabooResponse( - @SerialName("body") val body: Body = Body(), - - ) : DataGoKrBaseResponse() { +class DurIngrCombinationTabooResponse : DataGoKrResponse() { @Serializable - data class Body( - @SerialName("items") val items: List = listOf(), - @SerialName("numOfRows") val numOfRows: Int = 0, // 15 - @SerialName("pageNo") val pageNo: Int = 0, // 1 - @SerialName("totalCount") val totalCount: Int = 0, // 15 + data class Item( + @SerialName("item") val item: Item = Item(), ) { + /** + * @param typeName DUR유형 + * @param mixType 복합제구분(단일/복합) + * @param ingrCode DUR성분코드 + * @param ingrKorName DUR성분명 + * @param ingrEngName DUR성분 영문명 + * @param className 약효분류 + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param delYn 상태(정상/삭제) + * @param mix 복합제 + * @param mixtureIngrEngName 병용금기 DUR성분 영문 + * @param mixtureIngrKorName 병용금기 DUR성분 한글 + * @param mixtureClass 병용금기 약효분류 + * @param mixtureIngrCode 병용금기 DUR성분코드 + * @param mixtureMix 병용금기 복합제 + * @param mixtureMixType 병용금기 복합제구분(단일/복합) + * @param mixtureOri 병용금기 관계성분 + * @param ori 관계성분 + */ @Serializable data class Item( - @SerialName("item") val item: Item = Item(), - ) { - /** - * @param typeName DUR유형 - * @param mixType 복합제구분(단일/복합) - * @param ingrCode DUR성분코드 - * @param ingrKorName DUR성분명 - * @param ingrEngName DUR성분 영문명 - * @param className 약효분류 - * @param notificationDate 고시일자 - * @param prohibitContent 금기내용 - * @param remark 비고 - * @param delYn 상태(정상/삭제) - * @param mix 복합제 - * @param mixtureIngrEngName 병용금기 DUR성분 영문 - * @param mixtureIngrKorName 병용금기 DUR성분 한글 - * @param mixtureClass 병용금기 약효분류 - * @param mixtureIngrCode 병용금기 DUR성분코드 - * @param mixtureMix 병용금기 복합제 - * @param mixtureMixType 병용금기 복합제구분(단일/복합) - * @param mixtureOri 병용금기 관계성분 - * @param ori 관계성분 - */ - @Serializable - data class Item( - @SerialName("CLASS") val className: String = "", // [06290]기타의 화학요법제 - @SerialName("DEL_YN") val delYn: String = "", // 정상 - @SerialName("INGR_CODE") val ingrCode: String = "", // D000762 - @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Itraconazole - @SerialName("INGR_KOR_NAME") val ingrKorName: String = "", // 이트라코나졸 - @SerialName("MIX") val mix: String = "", - @SerialName("MIXTURE_CLASS") val mixtureClass: String = "", // [02180]동맥경화용제 - @SerialName("MIXTURE_INGR_CODE") val mixtureIngrCode: String = "", // D000027 - @SerialName("MIXTURE_INGR_ENG_NAME") val mixtureIngrEngName: String = "", // Simvastatin - @SerialName("MIXTURE_INGR_KOR_NAME") val mixtureIngrKorName: String = "", // 심바스타틴 - @SerialName("MIXTURE_MIX") val mixtureMix: String = "", - @SerialName("MIXTURE_MIX_TYPE") val mixtureMixType: String = "", // 단일 - @SerialName("MIXTURE_ORI") val mixtureOri: String = "", // [M089710]심바스타틴 - @SerialName("MIX_TYPE") val mixType: String = "", // 단일 - @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20090303 - @SerialName("ORI") - val ori: String = "", // [M083733]이트라코나졸제피과립/[M083734]이트라코나졸/[M092870]이트라코나졸고체분산체/[M201487]이트라코나졸고체분산/[M201624]제피이트라코나졸과립 - @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 횡문근융해증 - @SerialName("REMARK") val remark: String = "", // 75세 이상 남성 - @SerialName("TYPE_NAME") val typeName: String = "", // 병용금기 - ) - } + @SerialName("CLASS") val className: String = "", // [06290]기타의 화학요법제 + @SerialName("DEL_YN") val delYn: String = "", // 정상 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000762 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Itraconazole + @SerialName("INGR_KOR_NAME") val ingrKorName: String = "", // 이트라코나졸 + @SerialName("MIX") val mix: String = "", + @SerialName("MIXTURE_CLASS") val mixtureClass: String = "", // [02180]동맥경화용제 + @SerialName("MIXTURE_INGR_CODE") val mixtureIngrCode: String = "", // D000027 + @SerialName("MIXTURE_INGR_ENG_NAME") val mixtureIngrEngName: String = "", // Simvastatin + @SerialName("MIXTURE_INGR_KOR_NAME") val mixtureIngrKorName: String = "", // 심바스타틴 + @SerialName("MIXTURE_MIX") val mixtureMix: String = "", + @SerialName("MIXTURE_MIX_TYPE") val mixtureMixType: String = "", // 단일 + @SerialName("MIXTURE_ORI") val mixtureOri: String = "", // [M089710]심바스타틴 + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20090303 + @SerialName("ORI") + val ori: String = "", // [M083733]이트라코나졸제피과립/[M083734]이트라코나졸/[M092870]이트라코나졸고체분산체/[M201487]이트라코나졸고체분산/[M201624]제피이트라코나졸과립 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 횡문근융해증 + @SerialName("REMARK") val remark: String = "", // 75세 이상 남성 + @SerialName("TYPE_NAME") val typeName: String = "", // 병용금기 + ) } + } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/dosing/DurIngrDosingCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/dosing/DurIngrDosingCautionResponse.kt index 0515ab28f..f8aaa7abd 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/dosing/DurIngrDosingCautionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/dosing/DurIngrDosingCautionResponse.kt @@ -1,62 +1,53 @@ package com.android.mediproject.core.model.datagokr.duringr.dosing -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurIngrDosingCautionResponse( - @SerialName("body") val body: Body = Body(), -) : DataGoKrBaseResponse() { +class DurIngrDosingCautionResponse : DataGoKrResponse() { + @Serializable - data class Body( - @SerialName("items") val items: List = listOf(), - @SerialName("numOfRows") val numOfRows: Int = 0, // 15 - @SerialName("pageNo") val pageNo: Int = 0, // 1 - @SerialName("totalCount") val totalCount: Int = 0, // 1 + data class Item( + @SerialName("item") val item: Item = Item(), ) { + + /** + * @param durSeq DUR번호 + * @param typeName DUR유형 + * @param mixType 복합제구분(단일/복합) + * @param ingrCode DUR성분코드 + * @param ingrKorName DUR성분 명 + * @param ingrEngName DUR성분 영문명 + * @param mixIngr 복합제 + * @param oriIngr 관계성분 + * @param className 약효분류 + * @param formName 제형 + * @param maxDosageTerm 최대 투여 기간 + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param delYn 상태(정상/삭제) + */ @Serializable data class Item( - @SerialName("item") val item: Item = Item(), - ) { - - /** - * @param durSeq DUR번호 - * @param typeName DUR유형 - * @param mixType 복합제구분(단일/복합) - * @param ingrCode DUR성분코드 - * @param ingrKorName DUR성분 명 - * @param ingrEngName DUR성분 영문명 - * @param mixIngr 복합제 - * @param oriIngr 관계성분 - * @param className 약효분류 - * @param formName 제형 - * @param maxDosageTerm 최대 투여 기간 - * @param notificationDate 고시일자 - * @param prohibitContent 금기내용 - * @param remark 비고 - * @param delYn 상태(정상/삭제) - */ - @Serializable - data class Item( - @SerialName("CLASS_NAME") val className: String = "", // [01120]최면진정제 - @SerialName("DEL_YN") val delYn: String = "", // 정상 - @SerialName("DUR_SEQ") val durSeq: String = "", // 459 - @SerialName("FORM_NAME") val formName: String = "", // 정제 - @SerialName("INGR_CODE") val ingrCode: String = "", // D000592 - @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Triazolam - @SerialName("INGR_NAME") val ingrKorName: String = "", // 트리아졸람 - @SerialName("MAX_DOSAGE_TERM") val maxDosageTerm: String = "", // 21일 - @SerialName("MIX_INGR") val mixIngr: String = "", - @SerialName("MIX_TYPE") val mixType: String = "", // 단일 - @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20100511 - @SerialName("ORI_INGR") val oriIngr: String = "", // [I005603]트리아졸람/[M088380]트리아졸람 - @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // null - @SerialName("REMARK") val remark: String = "", // null - @SerialName("TYPE_NAME") val typeName: String = "", // 투여기간주의 - ) - } + @SerialName("CLASS_NAME") val className: String = "", // [01120]최면진정제 + @SerialName("DEL_YN") val delYn: String = "", // 정상 + @SerialName("DUR_SEQ") val durSeq: String = "", // 459 + @SerialName("FORM_NAME") val formName: String = "", // 정제 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000592 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Triazolam + @SerialName("INGR_NAME") val ingrKorName: String = "", // 트리아졸람 + @SerialName("MAX_DOSAGE_TERM") val maxDosageTerm: String = "", // 21일 + @SerialName("MIX_INGR") val mixIngr: String = "", + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20100511 + @SerialName("ORI_INGR") val oriIngr: String = "", // [I005603]트리아졸람/[M088380]트리아졸람 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // null + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_NAME") val typeName: String = "", // 투여기간주의 + ) } } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/efficacygroupduplication/DurIngrEfficacyGroupDuplicationResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/efficacygroupduplication/DurIngrEfficacyGroupDuplicationResponse.kt index 75949300d..015a6ef76 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/efficacygroupduplication/DurIngrEfficacyGroupDuplicationResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/efficacygroupduplication/DurIngrEfficacyGroupDuplicationResponse.kt @@ -1,61 +1,50 @@ package com.android.mediproject.core.model.datagokr.duringr.efficacygroupduplication -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurIngrEfficacyGroupDuplicationResponse( - @SerialName("body") val body: Body = Body(), -) : DataGoKrBaseResponse() { +class DurIngrEfficacyGroupDuplicationResponse : DataGoKrResponse() { + @Serializable - data class Body( - @SerialName("items") val items: List = listOf(), - @SerialName("numOfRows") val numOfRows: Int = 0, // 15 - @SerialName("pageNo") val pageNo: Int = 0, // 1 - @SerialName("totalCount") val totalCount: Int = 0, // 1 + data class Item( + @SerialName("item") val item: Item = Item(), ) { + + /** + * @param durSeq DUR번호 + * @param typeName DUR유형 + * @param mixType 복합제구분(단일/복합) + * @param ingrCode DUR성분코드 + * @param ingrKorName DUR성분 명 + * @param ingrEngName DUR성분 영문명 + * @param mixIngr 복합제 + * @param oriIngr 관계성분 + * @param className 약효분류 + * @param effectCode 효능군 + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param delYn 상태(정상/삭제) + */ @Serializable data class Item( - @SerialName("item") val item: Item = Item(), - ) { - - /** - * @param durSeq DUR번호 - * @param typeName DUR유형 - * @param mixType 복합제구분(단일/복합) - * @param ingrCode DUR성분코드 - * @param ingrKorName DUR성분 명 - * @param ingrEngName DUR성분 영문명 - * @param mixIngr 복합제 - * @param oriIngr 관계성분 - * @param className 약효분류 - * @param effectCode 효능군 - * @param notificationDate 고시일자 - * @param prohibitContent 금기내용 - * @param remark 비고 - * @param delYn 상태(정상/삭제) - */ - @Serializable - data class Item( - @SerialName("CLASS_NAME") val className: String = "", // [01140]해열.진통.소염제 - @SerialName("DEL_YN") val delYn: String = "", // 정상 - @SerialName("DUR_SEQ") val durSeq: String = "", // 2463 - @SerialName("EFFECT_CODE") val effectCode: String = "", // 해열진통소염제 - @SerialName("INGR_CODE") val ingrCode: String = "", // D000739 - @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Aceclofenac - @SerialName("INGR_NAME") val ingrKorName: String = "", // 아세클로페낙 - @SerialName("MIX_INGR") val mixIngr: String = "", - @SerialName("MIX_TYPE") val mixType: String = "", // 단일 - @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20120831 - @SerialName("ORI_INGR") val oriIngr: String = "", // [M040359]아세클로페낙 - @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // null - @SerialName("REMARK") val remark: String = "", // null - @SerialName("TYPE_NAME") val typeName: String = "", // 효능군중복 - ) - } + @SerialName("CLASS_NAME") val className: String = "", // [01140]해열.진통.소염제 + @SerialName("DEL_YN") val delYn: String = "", // 정상 + @SerialName("DUR_SEQ") val durSeq: String = "", // 2463 + @SerialName("EFFECT_CODE") val effectCode: String = "", // 해열진통소염제 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000739 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Aceclofenac + @SerialName("INGR_NAME") val ingrKorName: String = "", // 아세클로페낙 + @SerialName("MIX_INGR") val mixIngr: String = "", + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20120831 + @SerialName("ORI_INGR") val oriIngr: String = "", // [M040359]아세클로페낙 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // null + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_NAME") val typeName: String = "", // 효능군중복 + ) } - - } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/pregnancy/DurIngrPregnantWomanTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/pregnancy/DurIngrPregnantWomanTabooResponse.kt index ac78d5962..3f2dc5ead 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/pregnancy/DurIngrPregnantWomanTabooResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/pregnancy/DurIngrPregnantWomanTabooResponse.kt @@ -1,62 +1,52 @@ package com.android.mediproject.core.model.datagokr.duringr.pregnancy -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurIngrPregnantWomanTabooResponse( - @SerialName("body") val body: Body = Body(), -) : DataGoKrBaseResponse() { +class DurIngrPregnantWomanTabooResponse : DataGoKrResponse() { @Serializable - data class Body( - @SerialName("items") val items: List = listOf(), - @SerialName("numOfRows") val numOfRows: Int = 0, // 15 - @SerialName("pageNo") val pageNo: Int = 0, // 1 - @SerialName("totalCount") val totalCount: Int = 0, // 1 + data class Item( + @SerialName("item") val item: Item = Item(), ) { + /** + * @param durSeq DUR번호 + * @param typeName DUR유형 + * @param mixType 복합제구분(단일/복합) + * @param ingrCode DUR성분코드 + * @param ingrKorName DUR성분 명 + * @param ingrEngName DUR성분 영문명 + * @param mixIngr 복합제 + * @param oriIngr 관계성분 + * @param className 약효분류 + * @param formName 제형 + * @param grade 등급 + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param delYn 상태(정상/삭제) + */ @Serializable data class Item( - @SerialName("item") val item: Item = Item(), - ) { - /** - * @param durSeq DUR번호 - * @param typeName DUR유형 - * @param mixType 복합제구분(단일/복합) - * @param ingrCode DUR성분코드 - * @param ingrKorName DUR성분 명 - * @param ingrEngName DUR성분 영문명 - * @param mixIngr 복합제 - * @param oriIngr 관계성분 - * @param className 약효분류 - * @param formName 제형 - * @param grade 등급 - * @param notificationDate 고시일자 - * @param prohibitContent 금기내용 - * @param remark 비고 - * @param delYn 상태(정상/삭제) - */ - @Serializable - data class Item( - @SerialName("CLASS_NAME") val className: String = "", // [02470]난포호르몬제 및 황체호르몬제 - @SerialName("DEL_YN") val delYn: String = "", // 정상 - @SerialName("DUR_SEQ") val durSeq: String = "", // 1893 - @SerialName("FORM_NAME") - val formName: String = "", // 연질캡슐제, 현탁상/유화주사제/용액용분말주사제/서방성현탁액용분말주사제/용액용동결건조분말주사제/현탁액용동결건조분말주사제/서방성현탁액용동결건조분말주사제/리포좀화현탁액용동결건조분말주사제/현탁액주사제/서방성현탁액성주사제/용액주사제 - @SerialName("GRADE") val grade: String = "", // 1등급 - @SerialName("INGR_CODE") val ingrCode: String = "", // D000100 - @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Progesterone - @SerialName("INGR_NAME") val ingrKorName: String = "", // 프로게스테론 - @SerialName("MIX_INGR") val mixIngr: String = "", - @SerialName("MIX_TYPE") val mixType: String = "", // 단일 - @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20081211 - @SerialName("ORI_INGR") val oriIngr: String = "", // [M040719]프로게스테론/[M086429]미분화프로게스테론/[M252921]프로게스테론(미분화) - @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 임부에 대한 안전성 미확립. - @SerialName("REMARK") val remark: String = "", // 경구 - @SerialName("TYPE_NAME") val typeName: String = "", // 임부금기 - ) - } + @SerialName("CLASS_NAME") val className: String = "", // [02470]난포호르몬제 및 황체호르몬제 + @SerialName("DEL_YN") val delYn: String = "", // 정상 + @SerialName("DUR_SEQ") val durSeq: String = "", // 1893 + @SerialName("FORM_NAME") + val formName: String = "", // 연질캡슐제, 현탁상/유화주사제/용액용분말주사제/서방성현탁액용분말주사제/용액용동결건조분말주사제/현탁액용동결건조분말주사제/서방성현탁액용동결건조분말주사제/리포좀화현탁액용동결건조분말주사제/현탁액주사제/서방성현탁액성주사제/용액주사제 + @SerialName("GRADE") val grade: String = "", // 1등급 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000100 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Progesterone + @SerialName("INGR_NAME") val ingrKorName: String = "", // 프로게스테론 + @SerialName("MIX_INGR") val mixIngr: String = "", + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20081211 + @SerialName("ORI_INGR") val oriIngr: String = "", // [M040719]프로게스테론/[M086429]미분화프로게스테론/[M252921]프로게스테론(미분화) + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 임부에 대한 안전성 미확립. + @SerialName("REMARK") val remark: String = "", // 경구 + @SerialName("TYPE_NAME") val typeName: String = "", // 임부금기 + ) } } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/DurIngrSeniorCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/DurIngrSeniorCautionResponse.kt index dd2bc153a..6f14b15d5 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/DurIngrSeniorCautionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/DurIngrSeniorCautionResponse.kt @@ -1,59 +1,48 @@ package com.android.mediproject.core.model.datagokr.duringr.senior -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurIngrSeniorCautionResponse( - @SerialName("body") val body: Body = Body(), -) : DataGoKrBaseResponse() { +class DurIngrSeniorCautionResponse : DataGoKrResponse() { + @Serializable - data class Body( - @SerialName("items") val items: List = listOf(), - @SerialName("numOfRows") val numOfRows: Int = 0, // 15 - @SerialName("pageNo") val pageNo: Int = 0, // 1 - @SerialName("totalCount") val totalCount: Int = 0, // 2 + data class Item( + @SerialName("item") val item: Item = Item(), ) { + + /** + * @param durSeq DUR번호 + * @param typeName DUR유형 + * @param mixType 복합제구분(단일/복합) + * @param ingrCode DUR성분코드 + * @param ingrKorName DUR성분 명 + * @param ingrEngName DUR성분 영문명 + * @param mixIngr 복합제 + * @param oriIngr 관계성분 + * @param formName 제형 + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param delYn 상태(정상/삭제) + */ @Serializable data class Item( - @SerialName("item") val item: Item = Item(), - ) { - - /** - * @param durSeq DUR번호 - * @param typeName DUR유형 - * @param mixType 복합제구분(단일/복합) - * @param ingrCode DUR성분코드 - * @param ingrKorName DUR성분 명 - * @param ingrEngName DUR성분 영문명 - * @param mixIngr 복합제 - * @param oriIngr 관계성분 - * @param formName 제형 - * @param notificationDate 고시일자 - * @param prohibitContent 금기내용 - * @param remark 비고 - * @param delYn 상태(정상/삭제) - */ - @Serializable - data class Item( - @SerialName("DEL_YN") val delYn: String = "", // 정상 - @SerialName("DUR_SEQ") val durSeq: String = "", // 1 - @SerialName("FORM_NAME") val formName: String = "", - @SerialName("INGR_CODE") val ingrCode: String = "", // D000056 - @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Chlordiazepoxide - @SerialName("INGR_NAME") val ingrKorName: String = "", // 클로르디아제폭시드 - @SerialName("MIX_INGR") val mixIngr: String = "", - @SerialName("MIX_TYPE") val mixType: String = "", // 단일 - @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20150728 - @SerialName("ORI_INGR") val oriIngr: String = "", // [M088403]클로르디아제폭시드/[M223206]클로르디아제폭시드염산염 - @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 노인에서의 장기지속형 벤조다이아제핀 사용은 운동실조, 과진정 등이 나타나기 쉬움으로 소량부터 신중투여 - @SerialName("REMARK") val remark: String = "", // null - @SerialName("TYPE_NAME") val typeName: String = "", // 노인주의 - ) - } + @SerialName("DEL_YN") val delYn: String = "", // 정상 + @SerialName("DUR_SEQ") val durSeq: String = "", // 1 + @SerialName("FORM_NAME") val formName: String = "", + @SerialName("INGR_CODE") val ingrCode: String = "", // D000056 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Chlordiazepoxide + @SerialName("INGR_NAME") val ingrKorName: String = "", // 클로르디아제폭시드 + @SerialName("MIX_INGR") val mixIngr: String = "", + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20150728 + @SerialName("ORI_INGR") val oriIngr: String = "", // [M088403]클로르디아제폭시드/[M223206]클로르디아제폭시드염산염 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 노인에서의 장기지속형 벤조다이아제핀 사용은 운동실조, 과진정 등이 나타나기 쉬움으로 소량부터 신중투여 + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_NAME") val typeName: String = "", // 노인주의 + ) } - - } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/specialtyagegroup/DurIngrSpecialtyAgeGroupTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/specialtyagegroup/DurIngrSpecialtyAgeGroupTabooResponse.kt index 0f16117c5..021c3084c 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/specialtyagegroup/DurIngrSpecialtyAgeGroupTabooResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/specialtyagegroup/DurIngrSpecialtyAgeGroupTabooResponse.kt @@ -1,63 +1,53 @@ package com.android.mediproject.core.model.datagokr.duringr.specialtyagegroup -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurIngrSpecialtyAgeGroupTabooResponse( - @SerialName("body") val body: Body = Body(), +class DurIngrSpecialtyAgeGroupTabooResponse : DataGoKrResponse() { - ) : DataGoKrBaseResponse() { @Serializable - data class Body( - @SerialName("items") val items: List = listOf(), - @SerialName("numOfRows") val numOfRows: Int = 0, // 15 - @SerialName("pageNo") val pageNo: Int = 0, // 1 - @SerialName("totalCount") val totalCount: Int = 0, // 1 + data class Item( + @SerialName("item") val item: Item = Item(), ) { + + /** + * @param durSeq DUR번호 + * @param typeName DUR유형 + * @param mixType 복합제구분(단일/복합) + * @param ingrCode DUR성분코드 + * @param ingrKorName DUR성분 명 + * @param ingrEngName DUR성분 영문명 + * @param mixIngr 복합제 + * @param oriIngr 관계성분 + * @param className 약효분류 + * @param ageBase 나이대 + * @param formName 제형 + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param delYn 상태(정상/삭제) + */ @Serializable data class Item( - @SerialName("item") val item: Item = Item(), - ) { - - /** - * @param durSeq DUR번호 - * @param typeName DUR유형 - * @param mixType 복합제구분(단일/복합) - * @param ingrCode DUR성분코드 - * @param ingrKorName DUR성분 명 - * @param ingrEngName DUR성분 영문명 - * @param mixIngr 복합제 - * @param oriIngr 관계성분 - * @param className 약효분류 - * @param ageBase 나이대 - * @param formName 제형 - * @param notificationDate 고시일자 - * @param prohibitContent 금기내용 - * @param remark 비고 - * @param delYn 상태(정상/삭제) - */ - @Serializable - data class Item( - @SerialName("AGE_BASE") val ageBase: String = "", // 18세 이하 - @SerialName("CLASS_NAME") val className: String = "", // [03960]당뇨병용제 - @SerialName("DEL_YN") val delYn: String = "", // 정상 - @SerialName("DUR_SEQ") val durSeq: String = "", // 455 - @SerialName("FORM_NAME") val formName: String = "", // 정제 - @SerialName("INGR_CODE") val ingrCode: String = "", // D000149 - @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Acarbose - @SerialName("INGR_NAME") val ingrKorName: String = "", // 아카보즈 - @SerialName("MIX_INGR") val mixIngr: String = "", - @SerialName("MIX_TYPE") val mixType: String = "", // 단일 - @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20140109 - @SerialName("ORI_INGR") val oriIngr: String = "", // [M085039]아카보즈 - @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 안전성 및 유효성 미확립 - @SerialName("REMARK") val remark: String = "", // null - @SerialName("TYPE_NAME") val typeName: String = "", // 특정연령대금기 - ) - } + @SerialName("AGE_BASE") val ageBase: String = "", // 18세 이하 + @SerialName("CLASS_NAME") val className: String = "", // [03960]당뇨병용제 + @SerialName("DEL_YN") val delYn: String = "", // 정상 + @SerialName("DUR_SEQ") val durSeq: String = "", // 455 + @SerialName("FORM_NAME") val formName: String = "", // 정제 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000149 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Acarbose + @SerialName("INGR_NAME") val ingrKorName: String = "", // 아카보즈 + @SerialName("MIX_INGR") val mixIngr: String = "", + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20140109 + @SerialName("ORI_INGR") val oriIngr: String = "", // [M085039]아카보즈 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 안전성 및 유효성 미확립 + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_NAME") val typeName: String = "", // 특정연령대금기 + ) } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/capacity/DurProductCapacityAttentionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/capacity/DurProductCapacityAttentionResponse.kt index be15fd785..04d74445a 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/capacity/DurProductCapacityAttentionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/capacity/DurProductCapacityAttentionResponse.kt @@ -1,70 +1,61 @@ package com.android.mediproject.core.model.datagokr.durproduct.capacity -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurProductCapacityAttentionResponse( - @SerialName("body") val body: Body = Body(), +class DurProductCapacityAttentionResponse : DataGoKrResponse() { - ) : DataGoKrBaseResponse() { + /** + * @param changeDate 변경일자 + * @param chart 성상 + * @param classCode 약효분류코드 + * @param className 약효분류 + * @param entpName 업체명 + * @param etcOtcName 전문일반 구분명 + * @param formName 제형명 + * @param ingrCode 성분코드 + * @param ingrEngName 성분영문명 + * @param ingrEngNameFull 성분영문명(전체) + * @param ingrName 성분명 + * @param itemName 제품명 + * @param itemPermitDate 품목허가일자 + * @param itemSeq 품목기준코드 + * @param mainIngr 주성분 + * @param mixIngr 복합제 + * @param mixType 복합제구분(단일/복합) + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param typeName DUR유형 + * + */ @Serializable - data class Body( - @SerialName("items") val items: List = listOf(), - @SerialName("numOfRows") val numOfRows: Int = 0, // 3 - @SerialName("pageNo") val pageNo: Int = 0, // 1 - @SerialName("totalCount") val totalCount: Int = 0, // 1 - ) { - /** - * @param changeDate 변경일자 - * @param chart 성상 - * @param classCode 약효분류코드 - * @param className 약효분류 - * @param entpName 업체명 - * @param etcOtcName 전문일반 구분명 - * @param formName 제형명 - * @param ingrCode 성분코드 - * @param ingrEngName 성분영문명 - * @param ingrEngNameFull 성분영문명(전체) - * @param ingrName 성분명 - * @param itemName 제품명 - * @param itemPermitDate 품목허가일자 - * @param itemSeq 품목기준코드 - * @param mainIngr 주성분 - * @param mixIngr 복합제 - * @param mixType 복합제구분(단일/복합) - * @param notificationDate 고시일자 - * @param prohibitContent 금기내용 - * @param remark 비고 - * @param typeName DUR유형 - * - */ - @Serializable - data class Item( - @SerialName("CHANGE_DATE") val changeDate: String = "", // 20190826 - @SerialName("CHART") val chart: String = "", // 미황색의 원형 정제 - @SerialName("CLASS_CODE") val classCode: String = "", // 01410 - @SerialName("CLASS_NAME") val className: String = "", // 항히스타민제 - @SerialName("ENTP_NAME") val entpName: String = "", // (주)유한양행 - @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 일반의약품 - @SerialName("FORM_NAME") val formName: String = "", // 나정 - @SerialName("INGR_CODE") val ingrCode: String = "", // D000893 - @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Chlorpheniramine Maleate - @SerialName("INGR_ENG_NAME_FULL") val ingrEngNameFull: String = "", // Chlorpheniramine Maleate(클로르페니라민말레산염) - @SerialName("INGR_NAME") val ingrName: String = "", // 클로르페니라민말레산염 - @SerialName("ITEM_NAME") val itemName: String = "", // 페니라민정(클로르페니라민말레산염) - @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 19601010 - @SerialName("ITEM_SEQ") val itemSeq: String = "", // 196000011 - @SerialName("MAIN_INGR") val mainIngr: String = "", // [M223211]클로르페니라민말레산염 - @SerialName("MIX_INGR") val mixIngr: String = "", // null - @SerialName("MIX_TYPE") val mixType: String = "", // 단일 - @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20180831 - @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 클로르페니라민말레산염 24mg - @SerialName("REMARK") val remark: String = "", // null - @SerialName("TYPE_NAME") val typeName: String = "", // 용량주의 - ) - } + data class Item( + @SerialName("CHANGE_DATE") val changeDate: String = "", // 20190826 + @SerialName("CHART") val chart: String = "", // 미황색의 원형 정제 + @SerialName("CLASS_CODE") val classCode: String = "", // 01410 + @SerialName("CLASS_NAME") val className: String = "", // 항히스타민제 + @SerialName("ENTP_NAME") val entpName: String = "", // (주)유한양행 + @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 일반의약품 + @SerialName("FORM_NAME") val formName: String = "", // 나정 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000893 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Chlorpheniramine Maleate + @SerialName("INGR_ENG_NAME_FULL") val ingrEngNameFull: String = "", // Chlorpheniramine Maleate(클로르페니라민말레산염) + @SerialName("INGR_NAME") val ingrName: String = "", // 클로르페니라민말레산염 + @SerialName("ITEM_NAME") val itemName: String = "", // 페니라민정(클로르페니라민말레산염) + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 19601010 + @SerialName("ITEM_SEQ") val itemSeq: String = "", // 196000011 + @SerialName("MAIN_INGR") val mainIngr: String = "", // [M223211]클로르페니라민말레산염 + @SerialName("MIX_INGR") val mixIngr: String = "", // null + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20180831 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 클로르페니라민말레산염 24mg + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_NAME") val typeName: String = "", // 용량주의 + ) + } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/combination/DurProductCombinationTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/combination/DurProductCombinationTabooResponse.kt index 6443bcad5..feba66ba2 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/combination/DurProductCombinationTabooResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/combination/DurProductCombinationTabooResponse.kt @@ -1,113 +1,104 @@ package com.android.mediproject.core.model.datagokr.durproduct.combination -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurProductCombinationTabooResponse( - @SerialName("body") val body: Body = Body(), -) : DataGoKrBaseResponse() { +class DurProductCombinationTabooResponse : DataGoKrResponse() { + + /** + * @param bizrNo 사업자등록번호 + * @param changeDate 변경일자 + * @param chart 성상 + * @param classCode 약효분류코드 + * @param className 약효분류 + * @param durSeq DUR 일련번호 + * @param entpName 업체명 + * @param etcOtcCode 전문일반 구분코드 + * @param etcOtcName 전문일반 구분명 + * @param formCode 제형코드 + * @param formName 제형명 + * @param ingrCode 성분코드 + * @param ingrEngName 성분영문명 + * @param ingrKorName 성분명 + * @param itemName 제품명 + * @param itemPermitDate 품목허가일자 + * @param itemSeq 품목기준코드 + * @param mainIngr 주성분 + * @param mix 복합제 구분(단일/복합) + * @param mixIngr 복합제 + * @param mixtureChangeDate 병용변경일자 + * @param mixtureChart 병용금기 성상 + * @param mixtureClassCode 병용금기 분류코드 + * @param mixtureClassName 병용금기 분류명 + * @param mixtureDurSeq 병용금기 DUR번호 + * @param mixtureEntpName 병용금기 업체명 + * @param mixtureEtcOtcCode 병용금기 전문일반구분코드 + * @param mixtureEtcOtcName 병용금기 전문일반구분명 + * @param mixtureFormCode 병용금기 제형코드 + * @param mixtureFormName 병용금기 제형명 + * @param mixtureIngrCode 병용금기 성분코드 + * @param mixtureIngrEngName 병용금기 성분영문명 + * @param mixtureIngrKorName 병용금기 성분명 + * @param mixtureItemName 병용금기 제품명 + * @param mixtureItemPermitDate 병용금기 허가일자 + * @param mixtureItemSeq 병용금기 품목기준코드 + * @param mixtureMainIngr 병용금기 주성분 + * @param mixtureMix 병용금기 복합제구분 + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param typeCode 금기 유형코드 + * @param typeName 금기 유형명 + */ @Serializable - data class Body( - @SerialName("items") val items: List = listOf(), - @SerialName("numOfRows") val numOfRows: Int = 0, // 15 - @SerialName("pageNo") val pageNo: Int = 0, // 1 - @SerialName("totalCount") val totalCount: Int = 0, // 5 - ) { - /** - * @param bizrNo 사업자등록번호 - * @param changeDate 변경일자 - * @param chart 성상 - * @param classCode 약효분류코드 - * @param className 약효분류 - * @param durSeq DUR 일련번호 - * @param entpName 업체명 - * @param etcOtcCode 전문일반 구분코드 - * @param etcOtcName 전문일반 구분명 - * @param formCode 제형코드 - * @param formName 제형명 - * @param ingrCode 성분코드 - * @param ingrEngName 성분영문명 - * @param ingrKorName 성분명 - * @param itemName 제품명 - * @param itemPermitDate 품목허가일자 - * @param itemSeq 품목기준코드 - * @param mainIngr 주성분 - * @param mix 복합제 구분(단일/복합) - * @param mixIngr 복합제 - * @param mixtureChangeDate 병용변경일자 - * @param mixtureChart 병용금기 성상 - * @param mixtureClassCode 병용금기 분류코드 - * @param mixtureClassName 병용금기 분류명 - * @param mixtureDurSeq 병용금기 DUR번호 - * @param mixtureEntpName 병용금기 업체명 - * @param mixtureEtcOtcCode 병용금기 전문일반구분코드 - * @param mixtureEtcOtcName 병용금기 전문일반구분명 - * @param mixtureFormCode 병용금기 제형코드 - * @param mixtureFormName 병용금기 제형명 - * @param mixtureIngrCode 병용금기 성분코드 - * @param mixtureIngrEngName 병용금기 성분영문명 - * @param mixtureIngrKorName 병용금기 성분명 - * @param mixtureItemName 병용금기 제품명 - * @param mixtureItemPermitDate 병용금기 허가일자 - * @param mixtureItemSeq 병용금기 품목기준코드 - * @param mixtureMainIngr 병용금기 주성분 - * @param mixtureMix 병용금기 복합제구분 - * @param notificationDate 고시일자 - * @param prohibitContent 금기내용 - * @param remark 비고 - * @param typeCode 금기 유형코드 - * @param typeName 금기 유형명 - */ - @Serializable - data class Item( - @SerialName("BIZRNO") val bizrNo: String = "", // 1188100450 - @SerialName("CHANGE_DATE") val changeDate: String = "", // null - @SerialName("CHART") val chart: String = "", // 무색 맑은 용액이 충전된 무색의 앰플 주사제 - @SerialName("CLASS_CODE") val classCode: String = "", // 01120 - @SerialName("CLASS_NAME") val className: String = "", // 최면진정제 - @SerialName("DUR_SEQ") val durSeq: String = "", // 705 - @SerialName("ENTP_NAME") val entpName: String = "", // 부광약품(주) - @SerialName("ETC_OTC_CODE") val etcOtcCode: String = "", // 02 - @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 전문의약품 - @SerialName("FORM_CODE") val formCode: String = "", // 210101 - @SerialName("FORM_NAME") val formName: String = "", // 용액주사제 - @SerialName("INGR_CODE") val ingrCode: String = "", // D000007 - @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Midazolam - @SerialName("INGR_KOR_NAME") val ingrKorName: String = "", // 미다졸람 - @SerialName("ITEM_NAME") val itemName: String = "", // 부광미다졸람주사15밀리그램/3밀리리터(수출용) - @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 20200413 - @SerialName("ITEM_SEQ") val itemSeq: String = "", // 202002585 - @SerialName("MAIN_INGR") val mainIngr: String = "", // [M222760]미다졸람 - @SerialName("MIX") val mix: String = "", // 단일 - @SerialName("MIX_INGR") val mixIngr: String = "", // null - @SerialName("MIXTURE_CHANGE_DATE") val mixtureChangeDate: String = "", // 20230530 - @SerialName("MIXTURE_CHART") val mixtureChart: String = "", // 흰색의 장방형 필름코팅정 - @SerialName("MIXTURE_CLASS_CODE") val mixtureClassCode: String = "", // 06290 - @SerialName("MIXTURE_CLASS_NAME") val mixtureClassName: String = "", // 기타의 화학요법제 - @SerialName("MIXTURE_DUR_SEQ") val mixtureDurSeq: String = "", // 705 - @SerialName("MIXTURE_ENTP_NAME") val mixtureEntpName: String = "", // 한국애브비(주) - @SerialName("MIXTURE_ETC_OTC_CODE") val mixtureEtcOtcCode: String = "", // 02 - @SerialName("MIXTURE_ETC_OTC_NAME") val mixtureEtcOtcName: String = "", // 전문의약품 - @SerialName("MIXTURE_FORM_CODE") val mixtureFormCode: String = "", // 010201 - @SerialName("MIXTURE_FORM_NAME") val mixtureFormName: String = "", // 필름코팅정 - @SerialName("MIXTURE_INGR_CODE") val mixtureIngrCode: String = "", // D000712 - @SerialName("MIXTURE_INGR_ENG_NAME") val mixtureIngrEngName: String = "", // Ritonavir - @SerialName("MIXTURE_INGR_KOR_NAME") val mixtureIngrKorName: String = "", // 리토나비르 - @SerialName("MIXTURE_ITEM_NAME") val mixtureItemName: String = "", // 노비르정(리토나비르) - @SerialName("MIXTURE_ITEM_PERMIT_DATE") val mixtureItemPermitDate: String = "", // 20110901 - @SerialName("MIXTURE_ITEM_SEQ") val mixtureItemSeq: String = "", // 201106064 - @SerialName("MIXTURE_MAIN_INGR") val mixtureMainIngr: String = "", // [M259362]리토나비르 - @SerialName("MIXTURE_MIX") val mixtureMix: String = "", // 단일 - @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20091203 - @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 진정작용의 연장 또는 증가, 호흡저하 - @SerialName("REMARK") val remark: String = "", // null - @SerialName("TYPE_CODE") val typeCode: String = "", // A - @SerialName("TYPE_NAME") val typeName: String = "", // 병용금기 - ) - } + data class Item( + @SerialName("BIZRNO") val bizrNo: String = "", // 1188100450 + @SerialName("CHANGE_DATE") val changeDate: String = "", // null + @SerialName("CHART") val chart: String = "", // 무색 맑은 용액이 충전된 무색의 앰플 주사제 + @SerialName("CLASS_CODE") val classCode: String = "", // 01120 + @SerialName("CLASS_NAME") val className: String = "", // 최면진정제 + @SerialName("DUR_SEQ") val durSeq: String = "", // 705 + @SerialName("ENTP_NAME") val entpName: String = "", // 부광약품(주) + @SerialName("ETC_OTC_CODE") val etcOtcCode: String = "", // 02 + @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 전문의약품 + @SerialName("FORM_CODE") val formCode: String = "", // 210101 + @SerialName("FORM_NAME") val formName: String = "", // 용액주사제 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000007 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Midazolam + @SerialName("INGR_KOR_NAME") val ingrKorName: String = "", // 미다졸람 + @SerialName("ITEM_NAME") val itemName: String = "", // 부광미다졸람주사15밀리그램/3밀리리터(수출용) + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 20200413 + @SerialName("ITEM_SEQ") val itemSeq: String = "", // 202002585 + @SerialName("MAIN_INGR") val mainIngr: String = "", // [M222760]미다졸람 + @SerialName("MIX") val mix: String = "", // 단일 + @SerialName("MIX_INGR") val mixIngr: String = "", // null + @SerialName("MIXTURE_CHANGE_DATE") val mixtureChangeDate: String = "", // 20230530 + @SerialName("MIXTURE_CHART") val mixtureChart: String = "", // 흰색의 장방형 필름코팅정 + @SerialName("MIXTURE_CLASS_CODE") val mixtureClassCode: String = "", // 06290 + @SerialName("MIXTURE_CLASS_NAME") val mixtureClassName: String = "", // 기타의 화학요법제 + @SerialName("MIXTURE_DUR_SEQ") val mixtureDurSeq: String = "", // 705 + @SerialName("MIXTURE_ENTP_NAME") val mixtureEntpName: String = "", // 한국애브비(주) + @SerialName("MIXTURE_ETC_OTC_CODE") val mixtureEtcOtcCode: String = "", // 02 + @SerialName("MIXTURE_ETC_OTC_NAME") val mixtureEtcOtcName: String = "", // 전문의약품 + @SerialName("MIXTURE_FORM_CODE") val mixtureFormCode: String = "", // 010201 + @SerialName("MIXTURE_FORM_NAME") val mixtureFormName: String = "", // 필름코팅정 + @SerialName("MIXTURE_INGR_CODE") val mixtureIngrCode: String = "", // D000712 + @SerialName("MIXTURE_INGR_ENG_NAME") val mixtureIngrEngName: String = "", // Ritonavir + @SerialName("MIXTURE_INGR_KOR_NAME") val mixtureIngrKorName: String = "", // 리토나비르 + @SerialName("MIXTURE_ITEM_NAME") val mixtureItemName: String = "", // 노비르정(리토나비르) + @SerialName("MIXTURE_ITEM_PERMIT_DATE") val mixtureItemPermitDate: String = "", // 20110901 + @SerialName("MIXTURE_ITEM_SEQ") val mixtureItemSeq: String = "", // 201106064 + @SerialName("MIXTURE_MAIN_INGR") val mixtureMainIngr: String = "", // [M259362]리토나비르 + @SerialName("MIXTURE_MIX") val mixtureMix: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20091203 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 진정작용의 연장 또는 증가, 호흡저하 + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_CODE") val typeCode: String = "", // A + @SerialName("TYPE_NAME") val typeName: String = "", // 병용금기 + ) } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/dosing/DurProductDosingCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/dosing/DurProductDosingCautionResponse.kt index ab242c1cb..3d2e09a08 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/dosing/DurProductDosingCautionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/dosing/DurProductDosingCautionResponse.kt @@ -1,70 +1,60 @@ package com.android.mediproject.core.model.datagokr.durproduct.dosing -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurProductDosingCautionResponse( - @SerialName("body") val body: Body = Body(), +class DurProductDosingCautionResponse : DataGoKrResponse() { - ) : DataGoKrBaseResponse() { + /** + * @param changeDate 변경일자 + * @param chart 성상 + * @param classCode 약효분류코드 + * @param className 약효분류 + * @param entpName 업체명 + * @param etcOtcName 전문일반 구분명 + * @param formName 제형명 + * @param ingrCode 성분코드 + * @param ingrEngName 성분영문명 + * @param ingrEngNameFull 성분영문명(전체) + * @param ingrName 성분명 + * @param itemName 제품명 + * @param itemPermitDate 품목허가일자 + * @param itemSeq 품목기준코드 + * @param mainIngr 주성분 + * @param mixIngr 복합제 + * @param mixType 복합제구분(단일/복합) + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param typeName DUR유형 + */ @Serializable - data class Body( - @SerialName("items") val items: List = listOf(), - @SerialName("numOfRows") val numOfRows: Int = 0, // 3 - @SerialName("pageNo") val pageNo: Int = 0, // 1 - @SerialName("totalCount") val totalCount: Int = 0, // 1 - ) { - /** - * @param changeDate 변경일자 - * @param chart 성상 - * @param classCode 약효분류코드 - * @param className 약효분류 - * @param entpName 업체명 - * @param etcOtcName 전문일반 구분명 - * @param formName 제형명 - * @param ingrCode 성분코드 - * @param ingrEngName 성분영문명 - * @param ingrEngNameFull 성분영문명(전체) - * @param ingrName 성분명 - * @param itemName 제품명 - * @param itemPermitDate 품목허가일자 - * @param itemSeq 품목기준코드 - * @param mainIngr 주성분 - * @param mixIngr 복합제 - * @param mixType 복합제구분(단일/복합) - * @param notificationDate 고시일자 - * @param prohibitContent 금기내용 - * @param remark 비고 - * @param typeName DUR유형 - */ - @Serializable - data class Item( - @SerialName("CHANGE_DATE") val changeDate: String = "", // 20140103 - @SerialName("CHART") val chart: String = "", // 흰색의 원형 필름코팅정 - @SerialName("CLASS_CODE") val classCode: String = "", // 02390 - @SerialName("CLASS_NAME") val className: String = "", // 기타의 소화기관용약 - @SerialName("ENTP_NAME") val entpName: String = "", // 동화약품(주) - @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 전문의약품 - @SerialName("FORM_NAME") val formName: String = "", // 필름코팅정 - @SerialName("INGR_CODE") val ingrCode: String = "", // D000425 - @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Metoclopramide - @SerialName("INGR_ENG_NAME_FULL") val ingrEngNameFull: String = "", // Metoclopramide(메토클로프라미드) - @SerialName("INGR_NAME") val ingrName: String = "", // 메토클로프라미드 - @SerialName("ITEM_NAME") val itemName: String = "", // 맥페란정(메토클로프라미드) - @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 19720210 - @SerialName("ITEM_SEQ") val itemSeq: String = "", // 197200484 - @SerialName("MAIN_INGR") val mainIngr: String = "", // [M050465]메토클로프라미드 - @SerialName("MIX_INGR") val mixIngr: String = "", // null - @SerialName("MIX_TYPE") val mixType: String = "", // 단일 - @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20150331 - @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // null - @SerialName("REMARK") val remark: String = "", // null - @SerialName("TYPE_NAME") val typeName: String = "", // 투여기간주의 - ) - } + data class Item( + @SerialName("CHANGE_DATE") val changeDate: String = "", // 20140103 + @SerialName("CHART") val chart: String = "", // 흰색의 원형 필름코팅정 + @SerialName("CLASS_CODE") val classCode: String = "", // 02390 + @SerialName("CLASS_NAME") val className: String = "", // 기타의 소화기관용약 + @SerialName("ENTP_NAME") val entpName: String = "", // 동화약품(주) + @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 전문의약품 + @SerialName("FORM_NAME") val formName: String = "", // 필름코팅정 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000425 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Metoclopramide + @SerialName("INGR_ENG_NAME_FULL") val ingrEngNameFull: String = "", // Metoclopramide(메토클로프라미드) + @SerialName("INGR_NAME") val ingrName: String = "", // 메토클로프라미드 + @SerialName("ITEM_NAME") val itemName: String = "", // 맥페란정(메토클로프라미드) + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 19720210 + @SerialName("ITEM_SEQ") val itemSeq: String = "", // 197200484 + @SerialName("MAIN_INGR") val mainIngr: String = "", // [M050465]메토클로프라미드 + @SerialName("MIX_INGR") val mixIngr: String = "", // null + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20150331 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // null + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_NAME") val typeName: String = "", // 투여기간주의 + ) } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplicationResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplicationResponse.kt index baf1062ed..1335781fa 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplicationResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplicationResponse.kt @@ -1,81 +1,70 @@ package com.android.mediproject.core.model.datagokr.durproduct.efficacygroupduplication -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurProductEfficacyGroupDuplicationResponse( - @SerialName("body") val body: Body = Body(), -) : DataGoKrBaseResponse() { - @Serializable - data class Body( - @SerialName("items") val items: List = listOf(), - @SerialName("numOfRows") val numOfRows: Int = 0, // 3 - @SerialName("pageNo") val pageNo: Int = 0, // 1 - @SerialName("totalCount") val totalCount: Int = 0, // 1 - ) { - /** - * @param changeDate 변경일자 - * @param chart 성상 - * @param classCode 약효분류코드 - * @param entpName 업체명 - * @param etcOtcName 전문일반 구분명 - * @param formName 제형명 - * @param ingrCode 성분코드 - * @param ingrEngName 성분영문명 - * @param ingrName 성분명 - * @param itemName 제품명 - * @param itemPermitDate 품목허가일자 - * @param itemSeq 품목기준코드 - * @param mainIngr 주성분 - * @param mixIngr 복합제 - * @param bizrNo 사업자등록번호 - * @param className 약효분류 - * @param durSeq DUR 일련번호 - * @param etcOtcCode 전문일반 구분코드 - * @param formCode 제형코드 - * @param ingrEngNameFull 성분영문명(전체) - * @param effectName 효능 - * @param mix 복합제 구분(단일/복합) - * @param formCodeName 제형코드명 - * @param notificationDate 고시일자 - * @param prohibitContent 금기내용 - * @param remark 비고 - * @param typeName DUR유형 - */ - @Serializable - data class Item( - @SerialName("BIZRNO") val bizrNo: String = "", // 1138106691 - @SerialName("CHANGE_DATE") val changeDate: String = "", // 20131231 - @SerialName("CHART") val chart: String = "", // 백색의 원형정제이다. - @SerialName("CLASS_CODE") val classCode: String = "", // 01190 - @SerialName("CLASS_NAME") val className: String = "", // 기타의 중추신경용약 - @SerialName("DUR_SEQ") val durSeq: String = "", // 2600 - @SerialName("EFFECT_NAME") val effectName: String = "", // 정신신경용제 - @SerialName("ENTP_NAME") val entpName: String = "", // 아주약품(주) - @SerialName("ETC_OTC_CODE") val etcOtcCode: String = "", // 02 - @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 전문의약품 - @SerialName("FORM_CODE") val formCode: String = "", // 010101 - @SerialName("FORM_CODE_NAME") val formCodeName: String = "", // 나정 - @SerialName("FORM_NAME") val formName: String = "", // 나정 - @SerialName("INGR_CODE") val ingrCode: String = "", // D000468 - @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Orphenadrine Hydrochloride - @SerialName("INGR_ENG_NAME_FULL") val ingrEngNameFull: String = "", // Orphenadrine(오르페나드린) - @SerialName("INGR_NAME") val ingrName: String = "", // 오르페나드린염산염 - @SerialName("ITEM_NAME") val itemName: String = "", // 닉신정(오르페나드린염산염)(수출용) - @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 19841019 - @SerialName("ITEM_SEQ") val itemSeq: String = "", // 198400314 - @SerialName("MAIN_INGR") val mainIngr: String = "", // [M222877]오르페나드린염산염 - @SerialName("MIX") val mix: String = "", // 단일 - @SerialName("MIX_INGR") val mixIngr: String = "", // null - @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20131227 - @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // null - @SerialName("REMARK") val remark: String = "", // null - @SerialName("TYPE_NAME") val typeName: String = "", // 효능군중복 - ) - } - +class DurProductEfficacyGroupDuplicationResponse : DataGoKrResponse() { + /** + * @param changeDate 변경일자 + * @param chart 성상 + * @param classCode 약효분류코드 + * @param entpName 업체명 + * @param etcOtcName 전문일반 구분명 + * @param formName 제형명 + * @param ingrCode 성분코드 + * @param ingrEngName 성분영문명 + * @param ingrName 성분명 + * @param itemName 제품명 + * @param itemPermitDate 품목허가일자 + * @param itemSeq 품목기준코드 + * @param mainIngr 주성분 + * @param mixIngr 복합제 + * @param bizrNo 사업자등록번호 + * @param className 약효분류 + * @param durSeq DUR 일련번호 + * @param etcOtcCode 전문일반 구분코드 + * @param formCode 제형코드 + * @param ingrEngNameFull 성분영문명(전체) + * @param effectName 효능 + * @param mix 복합제 구분(단일/복합) + * @param formCodeName 제형코드명 + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param typeName DUR유형 + */ + @Serializable + data class Item( + @SerialName("BIZRNO") val bizrNo: String = "", // 1138106691 + @SerialName("CHANGE_DATE") val changeDate: String = "", // 20131231 + @SerialName("CHART") val chart: String = "", // 백색의 원형정제이다. + @SerialName("CLASS_CODE") val classCode: String = "", // 01190 + @SerialName("CLASS_NAME") val className: String = "", // 기타의 중추신경용약 + @SerialName("DUR_SEQ") val durSeq: String = "", // 2600 + @SerialName("EFFECT_NAME") val effectName: String = "", // 정신신경용제 + @SerialName("ENTP_NAME") val entpName: String = "", // 아주약품(주) + @SerialName("ETC_OTC_CODE") val etcOtcCode: String = "", // 02 + @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 전문의약품 + @SerialName("FORM_CODE") val formCode: String = "", // 010101 + @SerialName("FORM_CODE_NAME") val formCodeName: String = "", // 나정 + @SerialName("FORM_NAME") val formName: String = "", // 나정 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000468 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Orphenadrine Hydrochloride + @SerialName("INGR_ENG_NAME_FULL") val ingrEngNameFull: String = "", // Orphenadrine(오르페나드린) + @SerialName("INGR_NAME") val ingrName: String = "", // 오르페나드린염산염 + @SerialName("ITEM_NAME") val itemName: String = "", // 닉신정(오르페나드린염산염)(수출용) + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 19841019 + @SerialName("ITEM_SEQ") val itemSeq: String = "", // 198400314 + @SerialName("MAIN_INGR") val mainIngr: String = "", // [M222877]오르페나드린염산염 + @SerialName("MIX") val mix: String = "", // 단일 + @SerialName("MIX_INGR") val mixIngr: String = "", // null + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20131227 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // null + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_NAME") val typeName: String = "", // 효능군중복 + ) } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt index 5438aa354..28997ff21 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt @@ -1,61 +1,49 @@ package com.android.mediproject.core.model.datagokr.durproduct.extendedreleasetablet -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurProductExReleaseTableSplitAttentionResponse( - @SerialName("body") val body: Body = Body(), - - ) : DataGoKrBaseResponse() { - @Serializable - data class Body( - @SerialName("items") val items: List = listOf(), - @SerialName("numOfRows") val numOfRows: Int = 0, // 3 - @SerialName("pageNo") val pageNo: Int = 0, // 1 - @SerialName("totalCount") val totalCount: Int = 0, // 1 - ) { - - /** - * @param bizrNo 사업자등록번호 - * @param changeDate 변경일자 - * @param chart 성상 - * @param classCode 약효분류코드 - * @param className 약효분류 - * @param entpName 업체명 - * @param etcOtcName 전문일반 구분명 - * @param formCodeName 제형코드명 - * @param itemName 제품명 - * @param itemPermitDate 품목허가일자 - * @param itemSeq 품목기준코드 - * @param mainIngr 주성분 - * @param mix 복합제 구분(단일/복합) - * @param prohibitContent 금기내용 - * @param remark 비고 - * @param typeName DUR유형 - */ - @Serializable - data class Item( - @SerialName("BIZRNO") val bizrNo: String = "", // 2188100518 - @SerialName("CHANGE_DATE") val changeDate: String = "", // 20210629 - @SerialName("CHART") val chart: String = "", // 내수용 : 연녹색의 원형 장용성 필름코팅정, 수출용 : 적색의 원형 장용성 필름코팅정 - @SerialName("CLASS_CODE") val classCode: String = "", // 03950 - @SerialName("CLASS_NAME") val className: String = "", // 효소제제 - @SerialName("ENTP_NAME") val entpName: String = "", // (주)에이프로젠바이오로직스 - @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 일반의약품 - @SerialName("FORM_CODE_NAME") val formCodeName: String = "", // 장용성필름코팅정 - @SerialName("ITEM_NAME") val itemName: String = "", // 키모랄에스정 - @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 1971May6th - @SerialName("ITEM_SEQ") val itemSeq: String = "", // 197100081 - @SerialName("MAIN_INGR") val mainIngr: String = "", // [M051649]결정트립신/[M095415]브로멜라인/[M095415]브로멜라인/[M051649]결정트립신 - @SerialName("MIX") val mix: String = "", // 복합 - @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 분할불가 - @SerialName("REMARK") val remark: String = "", // null - @SerialName("TYPE_NAME") val typeName: String = "", // 분할주의 - ) - } +class DurProductExReleaseTableSplitAttentionResponse : DataGoKrResponse() { + /** + * @param bizrNo 사업자등록번호 + * @param changeDate 변경일자 + * @param chart 성상 + * @param classCode 약효분류코드 + * @param className 약효분류 + * @param entpName 업체명 + * @param etcOtcName 전문일반 구분명 + * @param formCodeName 제형코드명 + * @param itemName 제품명 + * @param itemPermitDate 품목허가일자 + * @param itemSeq 품목기준코드 + * @param mainIngr 주성분 + * @param mix 복합제 구분(단일/복합) + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param typeName DUR유형 + */ + @Serializable + data class Item( + @SerialName("BIZRNO") val bizrNo: String = "", // 2188100518 + @SerialName("CHANGE_DATE") val changeDate: String = "", // 20210629 + @SerialName("CHART") val chart: String = "", // 내수용 : 연녹색의 원형 장용성 필름코팅정, 수출용 : 적색의 원형 장용성 필름코팅정 + @SerialName("CLASS_CODE") val classCode: String = "", // 03950 + @SerialName("CLASS_NAME") val className: String = "", // 효소제제 + @SerialName("ENTP_NAME") val entpName: String = "", // (주)에이프로젠바이오로직스 + @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 일반의약품 + @SerialName("FORM_CODE_NAME") val formCodeName: String = "", // 장용성필름코팅정 + @SerialName("ITEM_NAME") val itemName: String = "", // 키모랄에스정 + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 1971May6th + @SerialName("ITEM_SEQ") val itemSeq: String = "", // 197100081 + @SerialName("MAIN_INGR") val mainIngr: String = "", // [M051649]결정트립신/[M095415]브로멜라인/[M095415]브로멜라인/[M051649]결정트립신 + @SerialName("MIX") val mix: String = "", // 복합 + @SerialName("PROHBT_CONTENT") val prohibitContent: String = "", // 분할불가 + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_NAME") val typeName: String = "", // 분할주의 + ) } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/pregnancy/DurProductPregnantWomanTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/pregnancy/DurProductPregnantWomanTabooResponse.kt index 208268664..920f7a13b 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/pregnancy/DurProductPregnantWomanTabooResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/pregnancy/DurProductPregnantWomanTabooResponse.kt @@ -1,70 +1,59 @@ package com.android.mediproject.core.model.datagokr.durproduct.pregnancy -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurProductPregnantWomanTabooResponse( - @SerialName("body") val body: Body = Body(), -) : DataGoKrBaseResponse() { - @Serializable - data class Body( - @SerialName("items") val items: List = listOf(), - @SerialName("numOfRows") val numOfRows: Int = 0, // 3 - @SerialName("pageNo") val pageNo: Int = 0, // 1 - @SerialName("totalCount") val totalCount: Int = 0, // 1 - ) { - /** - * @param changeDate 변경일자 - * @param chart 성상 - * @param classCode 약효분류코드 - * @param className 약효분류 - * @param entpName 업체명 - * @param etcOtcName 전문일반 구분명 - * @param formName 제형명 - * @param ingrCode 성분코드 - * @param ingrEngName 성분영문명 - * @param ingrEngNameFull 성분영문명(전체) - * @param ingrName 성분명 - * @param itemName 제품명 - * @param itemPermitDate 품목허가일자 - * @param itemSeq 품목기준코드 - * @param mainIngr 주성분 - * @param mixIngr 복합제 - * @param mixType 복합제구분(단일/복합) - * @param notificationDate 고시일자 - * @param prohibitContent 금기내용 - * @param remark 비고 - * @param typeName DUR유형 - */ - @Serializable - data class Item( - @SerialName("CHANGE_DATE") val changeDate: String = "", // 20200327 - @SerialName("CHART") val chart: String = "", // 흰색의 원형 정제 - @SerialName("CLASS_CODE") val classCode: String = "", // 02170 - @SerialName("CLASS_NAME") val className: String = "", // 혈관확장제 - @SerialName("ENTP_NAME") val entpName: String = "", // 에이치케이이노엔(주) - @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 전문의약품 - @SerialName("FORM_NAME") val formName: String = "", // 나정 - @SerialName("INGR_CODE") val ingrCode: String = "", // D000818 - @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Diltiazem - @SerialName("INGR_ENG_NAME_FULL") val ingrEngNameFull: String = "", // Diltiazem(딜티아젬) - @SerialName("INGR_NAME") val ingrName: String = "", // 딜티아젬 - @SerialName("ITEM_NAME") val itemName: String = "", // 헤르벤정(딜티아젬염산염) - @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 19810720 - @SerialName("ITEM_SEQ") val itemSeq: String = "", // 198100012 - @SerialName("MAIN_INGR") val mainIngr: String = "", // [M222982]딜티아젬염산염 - @SerialName("MIX_INGR") val mixIngr: String = "", // null - @SerialName("MIX_TYPE") val mixType: String = "", // 단일 - @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20081211 - @SerialName("PROHBT_CONTENT") - val prohibitContent: String = "", // "(경구) 동물실험에서 골격, 심장, 망막 및 혀에 기형 보고.출생자의 체중감소 및 생존수 감소, 분만지연, 사산수 증가 보고.(주사)동물 실험에서 최기형성 및 태자치사 작용 보고." - @SerialName("REMARK") val remark: String = "", // null - @SerialName("TYPE_NAME") val typeName: String = "", // 임부금기 - ) - } - +class DurProductPregnantWomanTabooResponse : DataGoKrResponse() { + /** + * @param changeDate 변경일자 + * @param chart 성상 + * @param classCode 약효분류코드 + * @param className 약효분류 + * @param entpName 업체명 + * @param etcOtcName 전문일반 구분명 + * @param formName 제형명 + * @param ingrCode 성분코드 + * @param ingrEngName 성분영문명 + * @param ingrEngNameFull 성분영문명(전체) + * @param ingrName 성분명 + * @param itemName 제품명 + * @param itemPermitDate 품목허가일자 + * @param itemSeq 품목기준코드 + * @param mainIngr 주성분 + * @param mixIngr 복합제 + * @param mixType 복합제구분(단일/복합) + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param typeName DUR유형 + */ + @Serializable + data class Item( + @SerialName("CHANGE_DATE") val changeDate: String = "", // 20200327 + @SerialName("CHART") val chart: String = "", // 흰색의 원형 정제 + @SerialName("CLASS_CODE") val classCode: String = "", // 02170 + @SerialName("CLASS_NAME") val className: String = "", // 혈관확장제 + @SerialName("ENTP_NAME") val entpName: String = "", // 에이치케이이노엔(주) + @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 전문의약품 + @SerialName("FORM_NAME") val formName: String = "", // 나정 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000818 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Diltiazem + @SerialName("INGR_ENG_NAME_FULL") val ingrEngNameFull: String = "", // Diltiazem(딜티아젬) + @SerialName("INGR_NAME") val ingrName: String = "", // 딜티아젬 + @SerialName("ITEM_NAME") val itemName: String = "", // 헤르벤정(딜티아젬염산염) + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 19810720 + @SerialName("ITEM_SEQ") val itemSeq: String = "", // 198100012 + @SerialName("MAIN_INGR") val mainIngr: String = "", // [M222982]딜티아젬염산염 + @SerialName("MIX_INGR") val mixIngr: String = "", // null + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20081211 + @SerialName("PROHBT_CONTENT") + val prohibitContent: String = "", // "(경구) 동물실험에서 골격, 심장, 망막 및 혀에 기형 보고.출생자의 체중감소 및 생존수 감소, 분만지연, 사산수 증가 보고.(주사)동물 실험에서 최기형성 및 태자치사 작용 보고." + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_NAME") val typeName: String = "", // 임부금기 + ) } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/productlist/DurProductListResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/productlist/DurProductListResponse.kt index e8284b703..a38506fe0 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/productlist/DurProductListResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/productlist/DurProductListResponse.kt @@ -1,76 +1,68 @@ package com.android.mediproject.core.model.datagokr.durproduct.productlist -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurProductListResponse( - @SerialName("body") val body: Body = Body(), -) : DataGoKrBaseResponse() { +class DurProductListResponse : DataGoKrResponse() { + + + /** + * @param barCode 표준코드 + * @param bizrNo 사업자등록번호 + * @param cancelDate 취소일자 + * @param cancelName 취소사유 + * @param changeDate 변경일자 + * @param chart 성상 + * @param classNo 분류번호 + * @param ediCode 보험코드 + * @param eeDocId 제조방법 + * @param entpName 업체명 + * @param etcOtcCode 전문일반 구분코드 + * @param insertFile 첨부파일 + * @param itemName 제품명 + * @param itemPermitDate 품목허가일자 + * @param itemSeq 품목기준코드 + * @param materialName 원료성분 + * @param nbDocId 주의사항 + * @param packUnit 포장단위 + * @param reexamDate 재심사기간 + * @param reexamTarget 재심사대상 + * @param storageMethod 저장방법 + * @param typeCode 유형코드 + * @param typeName DUR 유형 + * @param validTerm 유효기간 + */ @Serializable - data class Body( - @SerialName("items") val items: List = listOf(), - @SerialName("numOfRows") val numOfRows: Int = 0, // 15 - @SerialName("pageNo") val pageNo: Int = 0, // 1 - @SerialName("totalCount") val totalCount: Int = 0, // 1 + data class Item( + @SerialName("BAR_CODE") val barCode: String = "", // 8806421025729 + @SerialName("BIZRNO") val bizrNo: String = "", // 1188100601 + @SerialName("CANCEL_DATE") val cancelDate: String = "", // null + @SerialName("CANCEL_NAME") val cancelName: String = "", // 정상 + @SerialName("CHANGE_DATE") val changeDate: String = "", // 2019August26th + @SerialName("CHART") val chart: String = "", // 미황색의 원형 정제 + @SerialName("CLASS_NO") val classNo: String = "", // [141]항히스타민제 + @SerialName("EDI_CODE") val ediCode: String = "", // 642102570 + @SerialName("EE_DOC_ID") val eeDocId: String = "", // HTTPS://NEDRUG.MFDS.GO.KR/PBP/CMN/PDFVIEWER/196000011/EE + @SerialName("ENTP_NAME") val entpName: String = "", // (주)유한양행 + @SerialName("ETC_OTC_CODE") val etcOtcCode: String = "", // 일반의약품 + @SerialName("INSERT_FILE") val insertFile: String = "", // HTTP://WWW.HEALTH.KR/IMAGES/INSERT_PDF/In_A11A0450A0085_00.pdf + @SerialName("ITEM_NAME") val itemName: String = "", // 페니라민정(클로르페니라민말레산염) + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 1960October10th + @SerialName("ITEM_SEQ") val itemSeq: String = "", // 196000011 + @SerialName("MATERIAL_NAME") val materialName: String = "", // 클로르페니라민말레산염,,2.0,밀리그램,KP, + @SerialName("NB_DOC_ID") val nbDocId: String = "", // HTTPS://NEDRUG.MFDS.GO.KR/PBP/CMN/PDFVIEWER/196000011/NB + @SerialName("PACK_UNIT") val packUnit: String = "", // 1000정/병 + @SerialName("REEXAM_DATE") val reexamDate: String = "", // null + @SerialName("REEXAM_TARGET") val reexamTarget: String = "", // null + @SerialName("STORAGE_METHOD") val storageMethod: String = "", // 실온, 건소, 밀폐용기, + @SerialName("TYPE_CODE") val typeCode: String = "", // D,F,I + @SerialName("TYPE_NAME ") val typeName: String = "", // 용량주의,노인주의,첨가제주의 + @SerialName("VALID_TERM") val validTerm: String = "", // 제조일로부터 36 개월 ) { - - /** - * @param barCode 표준코드 - * @param bizrNo 사업자등록번호 - * @param cancelDate 취소일자 - * @param cancelName 취소사유 - * @param changeDate 변경일자 - * @param chart 성상 - * @param classNo 분류번호 - * @param ediCode 보험코드 - * @param eeDocId 제조방법 - * @param entpName 업체명 - * @param etcOtcCode 전문일반 구분코드 - * @param insertFile 첨부파일 - * @param itemName 제품명 - * @param itemPermitDate 품목허가일자 - * @param itemSeq 품목기준코드 - * @param materialName 원료성분 - * @param nbDocId 주의사항 - * @param packUnit 포장단위 - * @param reexamDate 재심사기간 - * @param reexamTarget 재심사대상 - * @param storageMethod 저장방법 - * @param typeCode 유형코드 - * @param typeName DUR 유형 - * @param validTerm 유효기간 - */ - @Serializable - data class Item( - @SerialName("BAR_CODE") val barCode: String = "", // 8806421025729 - @SerialName("BIZRNO") val bizrNo: String = "", // 1188100601 - @SerialName("CANCEL_DATE") val cancelDate: String = "", // null - @SerialName("CANCEL_NAME") val cancelName: String = "", // 정상 - @SerialName("CHANGE_DATE") val changeDate: String = "", // 2019August26th - @SerialName("CHART") val chart: String = "", // 미황색의 원형 정제 - @SerialName("CLASS_NO") val classNo: String = "", // [141]항히스타민제 - @SerialName("EDI_CODE") val ediCode: String = "", // 642102570 - @SerialName("EE_DOC_ID") val eeDocId: String = "", // HTTPS://NEDRUG.MFDS.GO.KR/PBP/CMN/PDFVIEWER/196000011/EE - @SerialName("ENTP_NAME") val entpName: String = "", // (주)유한양행 - @SerialName("ETC_OTC_CODE") val etcOtcCode: String = "", // 일반의약품 - @SerialName("INSERT_FILE") val insertFile: String = "", // HTTP://WWW.HEALTH.KR/IMAGES/INSERT_PDF/In_A11A0450A0085_00.pdf - @SerialName("ITEM_NAME") val itemName: String = "", // 페니라민정(클로르페니라민말레산염) - @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 1960October10th - @SerialName("ITEM_SEQ") val itemSeq: String = "", // 196000011 - @SerialName("MATERIAL_NAME") val materialName: String = "", // 클로르페니라민말레산염,,2.0,밀리그램,KP, - @SerialName("NB_DOC_ID") val nbDocId: String = "", // HTTPS://NEDRUG.MFDS.GO.KR/PBP/CMN/PDFVIEWER/196000011/NB - @SerialName("PACK_UNIT") val packUnit: String = "", // 1000정/병 - @SerialName("REEXAM_DATE") val reexamDate: String = "", // null - @SerialName("REEXAM_TARGET") val reexamTarget: String = "", // null - @SerialName("STORAGE_METHOD") val storageMethod: String = "", // 실온, 건소, 밀폐용기, - @SerialName("TYPE_CODE") val typeCode: String = "", // D,F,I - @SerialName("TYPE_NAME ") val typeName: String = "", // 용량주의,노인주의,첨가제주의 - @SerialName("VALID_TERM") val validTerm: String = "", // 제조일로부터 36 개월 - ) + val typeNames = typeName.split(",") + val typeCodes = typeCode.split(",") } - - } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductSeniorCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductSeniorCautionResponse.kt index e8e859a8a..2a3667bef 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductSeniorCautionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductSeniorCautionResponse.kt @@ -1,71 +1,62 @@ package com.android.mediproject.core.model.datagokr.durproduct.senior -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurProductSeniorCautionResponse( - @SerialName("body") val body: Body = Body(), -) : DataGoKrBaseResponse() { - @Serializable - data class Body( - @SerialName("items") val items: List = listOf(), - @SerialName("numOfRows") val numOfRows: Int = 0, // 15 - @SerialName("pageNo") val pageNo: Int = 0, // 1 - @SerialName("totalCount") val totalCount: Int = 0, // 5 - ) { +class DurProductSeniorCautionResponse : DataGoKrResponse() { + - /** - * @param changeDate 변경일자 - * @param chart 성상 - * @param entpName 업체명 - * @param itemName 제품명 - * @param itemPermitDate 품목허가일자 - * @param itemSeq 품목기준코드 - * @param typeName DUR 유형 - * @param className 약효분류 - * @param classCode 약효분류코드 - * @param etcOtcName 전문일반 구분명 - * @param formName 제형명 - * @param ingrCode 성분코드 - * @param ingrEngName 성분영문명 - * @param ingrName 성분명 - * @param mainIngr 주성분 - * @param mixIngr 복합제 - * @param mixType 복합제구분(단일/복합) - * @param notificationDate 고시일자 - * @param prohibitContent 금기내용 - * @param remark 비고 - * @param ingrEngNameFull 성분영문명(전체) - */ - @Serializable - data class Item( - @SerialName("CHANGE_DATE") val changeDate: String = "", // 20221201 - @SerialName("CHART") val chart: String = "", // 청색의 원형 필름코팅정 - @SerialName("CLASS_CODE") val classCode: String = "", // 01170 - @SerialName("CLASS_NAME") val className: String = "", // 정신신경용제 - @SerialName("ENTP_NAME") val entpName: String = "", // 환인제약(주) - @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 전문의약품 - @SerialName("FORM_NAME") val formName: String = "", // 필름코팅정 - @SerialName("INGR_CODE") val ingrCode: String = "", // D000809 - @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Amitriptyline - @SerialName("INGR_ENG_NAME_FULL") val ingrEngNameFull: String = "", // Amitriptyline(아미트리프틸린) - @SerialName("INGR_NAME") val ingrName: String = "", // 아미트리프틸린 - @SerialName("ITEM_NAME") val itemName: String = "", // 에나폰정10밀리그램(아미트리프틸린염산염) - @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 19700220 - @SerialName("ITEM_SEQ") val itemSeq: String = "", // 197000079 - @SerialName("MAIN_INGR") val mainIngr: String = "", // [M223101]아미트리프틸린염산염 - @SerialName("MIX_INGR") val mixIngr: String = "", // [M223101]아미트리프틸린염산염 - @SerialName("MIX_TYPE") val mixType: String = "", // 단일 - @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20150728 - @SerialName("PROHBT_CONTENT") - val prohibitContent: String = "", // 노인에서의 삼환계 항우울제 사용은 기립성 저혈압, 비틀거림, 항콜린작용에 의한 구갈, 배뇨곤란, 변비, 안내압항진 등이 나타나기 쉬움으로 소량으로 신중투여 - @SerialName("REMARK") val remark: String = "", // null - @SerialName("TYPE_NAME") val typeName: String = "", // 노인주의 - ) - } + /** + * @param changeDate 변경일자 + * @param chart 성상 + * @param entpName 업체명 + * @param itemName 제품명 + * @param itemPermitDate 품목허가일자 + * @param itemSeq 품목기준코드 + * @param typeName DUR 유형 + * @param className 약효분류 + * @param classCode 약효분류코드 + * @param etcOtcName 전문일반 구분명 + * @param formName 제형명 + * @param ingrCode 성분코드 + * @param ingrEngName 성분영문명 + * @param ingrName 성분명 + * @param mainIngr 주성분 + * @param mixIngr 복합제 + * @param mixType 복합제구분(단일/복합) + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param ingrEngNameFull 성분영문명(전체) + */ + @Serializable + data class Item( + @SerialName("CHANGE_DATE") val changeDate: String = "", // 20221201 + @SerialName("CHART") val chart: String = "", // 청색의 원형 필름코팅정 + @SerialName("CLASS_CODE") val classCode: String = "", // 01170 + @SerialName("CLASS_NAME") val className: String = "", // 정신신경용제 + @SerialName("ENTP_NAME") val entpName: String = "", // 환인제약(주) + @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 전문의약품 + @SerialName("FORM_NAME") val formName: String = "", // 필름코팅정 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000809 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Amitriptyline + @SerialName("INGR_ENG_NAME_FULL") val ingrEngNameFull: String = "", // Amitriptyline(아미트리프틸린) + @SerialName("INGR_NAME") val ingrName: String = "", // 아미트리프틸린 + @SerialName("ITEM_NAME") val itemName: String = "", // 에나폰정10밀리그램(아미트리프틸린염산염) + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 19700220 + @SerialName("ITEM_SEQ") val itemSeq: String = "", // 197000079 + @SerialName("MAIN_INGR") val mainIngr: String = "", // [M223101]아미트리프틸린염산염 + @SerialName("MIX_INGR") val mixIngr: String = "", // [M223101]아미트리프틸린염산염 + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20150728 + @SerialName("PROHBT_CONTENT") + val prohibitContent: String = "", // 노인에서의 삼환계 항우울제 사용은 기립성 저혈압, 비틀거림, 항콜린작용에 의한 구갈, 배뇨곤란, 변비, 안내압항진 등이 나타나기 쉬움으로 소량으로 신중투여 + @SerialName("REMARK") val remark: String = "", // null + @SerialName("TYPE_NAME") val typeName: String = "", // 노인주의 + ) } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTabooResponse.kt index b02847028..a65c0dcce 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTabooResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTabooResponse.kt @@ -1,70 +1,61 @@ package com.android.mediproject.core.model.datagokr.durproduct.specialtyagegroup -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DurProductSpecialtyAgeGroupTabooResponse( - @SerialName("body") val body: Body = Body(), -) : DataGoKrBaseResponse() { +class DurProductSpecialtyAgeGroupTabooResponse : DataGoKrResponse() { + + /** + * @param changeDate 변경일자 + * @param chart 성상 + * @param classCode 약효분류코드 + * @param className 약효분류 + * @param entpName 업체명 + * @param etcOtcName 전문일반 구분명 + * @param formName 제형명 + * @param ingrCode 성분코드 + * @param ingrEngName 성분영문명 + * @param ingrEngNameFull 성분영문명(전체) + * @param ingrName 성분명 + * @param itemName 제품명 + * @param itemPermitDate 품목허가일자 + * @param itemSeq 품목기준코드 + * @param mainIngr 주성분 + * @param mixIngr 복합제 + * @param mixType 복합제구분(단일/복합) + * @param notificationDate 고시일자 + * @param prohibitContent 금기내용 + * @param remark 비고 + * @param typeName DUR유형 + */ @Serializable - data class Body( - @SerialName("items") val items: List = listOf(), - @SerialName("numOfRows") val numOfRows: Int = 0, // 3 - @SerialName("pageNo") val pageNo: Int = 0, // 1 - @SerialName("totalCount") val totalCount: Int = 0, // 1 - ) { - /** - * @param changeDate 변경일자 - * @param chart 성상 - * @param classCode 약효분류코드 - * @param className 약효분류 - * @param entpName 업체명 - * @param etcOtcName 전문일반 구분명 - * @param formName 제형명 - * @param ingrCode 성분코드 - * @param ingrEngName 성분영문명 - * @param ingrEngNameFull 성분영문명(전체) - * @param ingrName 성분명 - * @param itemName 제품명 - * @param itemPermitDate 품목허가일자 - * @param itemSeq 품목기준코드 - * @param mainIngr 주성분 - * @param mixIngr 복합제 - * @param mixType 복합제구분(단일/복합) - * @param notificationDate 고시일자 - * @param prohibitContent 금기내용 - * @param remark 비고 - * @param typeName DUR유형 - */ - @Serializable - data class Item( - @SerialName("CHANGE_DATE") val changeDate: String = "", // 20200313 - @SerialName("CHART") val chart: String = "", // 황색의 결정 또는 결정성 가루가 들어 있는 상부는 갈색, 하부는 담회색의 캅셀이다. - @SerialName("CLASS_CODE") val classCode: String = "", // 06150 - @SerialName("CLASS_NAME") val className: String = "", // 주로 그람양성, 음성균, 리케치아, 비루스에 작용하는 것 - @SerialName("ENTP_NAME") val entpName: String = "", // (주)종근당 - @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 전문의약품 - @SerialName("FORM_NAME") val formName: String = "", // 경질캡슐제, 산제 - @SerialName("INGR_CODE") val ingrCode: String = "", // D000064 - @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Tetracycline Hydrochloride - @SerialName("INGR_ENG_NAME_FULL") val ingrEngNameFull: String = "", // Tetracycline Hydrochloride(테트라사이클린염산염) - @SerialName("INGR_NAME") val ingrName: String = "", // 테트라사이클린염산염 - @SerialName("ITEM_NAME") val itemName: String = "", // 테라싸이클린캅셀250밀리그람(염산테트라싸이클린) - @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 19600614 - @SerialName("ITEM_SEQ") val itemSeq: String = "", // 196000001 - @SerialName("MAIN_INGR") val mainIngr: String = "", // [M223235]테트라사이클린염산염 - @SerialName("MIX_INGR") val mixIngr: String = "", // null - @SerialName("MIX_TYPE") val mixType: String = "", // 단일 - @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20140109 - @SerialName("PROHBT_CONTENT") - val prohibitContent: String = "", // 소아 등(특히 치아 형성기인 12세 미만의 소아)에 투여 시, 치아의 착색?법랑질 형성 부전, 또는 일과성 골발육 부전을 일으킬 수 있음 - @SerialName("REMARK") val remark: String = "", // 다만, 다른 약을 사용할 수 없거나 효과가 없는 경우에만 8세 이상 신중투여 - @SerialName("TYPE_NAME") val typeName: String = "", // 특정연령대금기 - ) - } + data class Item( + @SerialName("CHANGE_DATE") val changeDate: String = "", // 20200313 + @SerialName("CHART") val chart: String = "", // 황색의 결정 또는 결정성 가루가 들어 있는 상부는 갈색, 하부는 담회색의 캅셀이다. + @SerialName("CLASS_CODE") val classCode: String = "", // 06150 + @SerialName("CLASS_NAME") val className: String = "", // 주로 그람양성, 음성균, 리케치아, 비루스에 작용하는 것 + @SerialName("ENTP_NAME") val entpName: String = "", // (주)종근당 + @SerialName("ETC_OTC_NAME") val etcOtcName: String = "", // 전문의약품 + @SerialName("FORM_NAME") val formName: String = "", // 경질캡슐제, 산제 + @SerialName("INGR_CODE") val ingrCode: String = "", // D000064 + @SerialName("INGR_ENG_NAME") val ingrEngName: String = "", // Tetracycline Hydrochloride + @SerialName("INGR_ENG_NAME_FULL") val ingrEngNameFull: String = "", // Tetracycline Hydrochloride(테트라사이클린염산염) + @SerialName("INGR_NAME") val ingrName: String = "", // 테트라사이클린염산염 + @SerialName("ITEM_NAME") val itemName: String = "", // 테라싸이클린캅셀250밀리그람(염산테트라싸이클린) + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 19600614 + @SerialName("ITEM_SEQ") val itemSeq: String = "", // 196000001 + @SerialName("MAIN_INGR") val mainIngr: String = "", // [M223235]테트라사이클린염산염 + @SerialName("MIX_INGR") val mixIngr: String = "", // null + @SerialName("MIX_TYPE") val mixType: String = "", // 단일 + @SerialName("NOTIFICATION_DATE") val notificationDate: String = "", // 20140109 + @SerialName("PROHBT_CONTENT") + val prohibitContent: String = "", // 소아 등(특히 치아 형성기인 12세 미만의 소아)에 투여 시, 치아의 착색?법랑질 형성 부전, 또는 일과성 골발육 부전을 일으킬 수 있음 + @SerialName("REMARK") val remark: String = "", // 다만, 다른 약을 사용할 수 없거나 효과가 없는 경우에만 8세 이상 신중투여 + @SerialName("TYPE_NAME") val typeName: String = "", // 특정연령대금기 + ) } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/local/navargs/BaseNavArgs.kt b/core/model/src/main/java/com/android/mediproject/core/model/local/navargs/BaseNavArgs.kt index 53451f45c..ba8b4db46 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/local/navargs/BaseNavArgs.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/local/navargs/BaseNavArgs.kt @@ -21,7 +21,6 @@ abstract class BaseNavArgs( } companion object { - @OptIn(ExperimentalStdlibApi::class) @Suppress("UNCHECKED_CAST") @JvmStatic fun fromBundle(bundle: Bundle): BaseNavArgs { diff --git a/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicineapproval/ApprovedMedicineItemDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicineapproval/ApprovedMedicine.kt similarity index 91% rename from core/model/src/main/java/com/android/mediproject/core/model/medicine/medicineapproval/ApprovedMedicineItemDto.kt rename to core/model/src/main/java/com/android/mediproject/core/model/medicine/medicineapproval/ApprovedMedicine.kt index 50ba5d1ab..576f122aa 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicineapproval/ApprovedMedicineItemDto.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicineapproval/ApprovedMedicine.kt @@ -25,8 +25,7 @@ package com.android.mediproject.core.model.medicine.medicineapproval * @property ediCode EDI코드 * @property bizrno 사업자등록번호 */ - -data class ApprovedMedicineItemDto( +data class ApprovedMedicine( val itemSeq: Long, val itemName: String, val itemEngName: String?, @@ -48,10 +47,11 @@ data class ApprovedMedicineItemDto( val cancelName: String? = null, val ediCode: String? = null, val bizrno: String? = null, - var onClick: ((ApprovedMedicineItemDto) -> Unit)? = null, + var onClick: ((ApprovedMedicine) -> Unit)? = null, ) -fun Item.toDto() = ApprovedMedicineItemDto(itemSeq = itemSeq.toLong(), +fun MedicineApprovalListResponse.Item.toApprovedMedicine() = ApprovedMedicine( + itemSeq = itemSeq.toLong(), itemName = itemName, itemEngName = itemEngName, entpName = entpName, @@ -71,4 +71,5 @@ fun Item.toDto() = ApprovedMedicineItemDto(itemSeq = itemSeq.toLong(), cancelDate = cancelDate, cancelName = cancelName, ediCode = ediCode, - bizrno = bizrno) \ No newline at end of file + bizrno = bizrno, +) diff --git a/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicineapproval/MedicineApprovalListResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicineapproval/MedicineApprovalListResponse.kt index 9a64f457f..5b1abeadd 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicineapproval/MedicineApprovalListResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicineapproval/MedicineApprovalListResponse.kt @@ -1,6 +1,6 @@ package com.android.mediproject.core.model.medicine.medicineapproval -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -12,63 +12,56 @@ import kotlinx.serialization.Serializable * */ @Serializable -data class MedicineApprovalListResponse( - @SerialName("body") val body: Body, -) : DataGoKrBaseResponse() +class MedicineApprovalListResponse : DataGoKrResponse() { -@Serializable -data class Body( - val items: List = emptyList(), @SerialName("numOfRows") val numOfRows: Int, // 15 - @SerialName("pageNo") val pageNo: Int, // 1 - @SerialName("totalCount") val totalCount: Int, // 245 -) + /** + * 의약품 별 데이터 클래스 + * @property itemSeq 일련번호 + * @property itemName 한글 의약품 명 + * @property itemEngName 영문 의약품 명 + * @property entpName 업체명 + * @property entpEngName 업체 영문명 + * @property entpSeq 업체 일련번호 + * @property entpNo 업체 번호 + * @property itemPermitDate 아이템 허가 일자 + * @property induty 업종 + * @property prdlstStdrCode 제품표준코드 + * @property medicineType 특수약품 구분 + * @property prductType 제품유형 + * @property prductPrmisnNo 제품허가번호 + * @property itemIngrName 성분명 + * @property itemIngrCnt 성분수 + * @property bigPrdtImgUrl 대표 제품 이미지 URL + * @property permitKindCode 허가종류코드 + * @property cancelDate 취소 일자 + * @property cancelName 취소 여부 + * @property ediCode EDI코드 + * @property bizrno 사업자등록번호 + * + */ + @Serializable + data class Item( + @SerialName("BIG_PRDT_IMG_URL") var bigPrdtImgUrl: String, + @SerialName("BIZRNO") val bizrno: String?, + @SerialName("CANCEL_DATE") val cancelDate: String?, + @SerialName("CANCEL_NAME") val cancelName: String?, + @SerialName("EDI_CODE") val ediCode: String?, + @SerialName("ENTP_ENG_NAME") val entpEngName: String?, + @SerialName("ENTP_NAME") val entpName: String, + @SerialName("ENTP_NO") val entpNo: String, + @SerialName("ENTP_SEQ") val entpSeq: String, + @SerialName("INDUTY") val induty: String?, + @SerialName("ITEM_ENG_NAME") val itemEngName: String?, + @SerialName("ITEM_INGR_CNT") val itemIngrCnt: String, + @SerialName("ITEM_INGR_NAME") val itemIngrName: String, + @SerialName("ITEM_NAME") val itemName: String, + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String, + @SerialName("ITEM_SEQ") val itemSeq: String, + @SerialName("PERMIT_KIND_CODE") val permitKindCode: String?, + @SerialName("PRDLST_STDR_CODE") val prdlstStdrCode: String?, + @SerialName("PRDUCT_PRMISN_NO") val prductPrmisnNo: String?, + @SerialName("PRDUCT_TYPE") val prductType: String, + @SerialName("SPCLTY_PBLC") val medicineType: String, + ) -/** - * 의약품 별 데이터 클래스 - * @property itemSeq 일련번호 - * @property itemName 한글 의약품 명 - * @property itemEngName 영문 의약품 명 - * @property entpName 업체명 - * @property entpEngName 업체 영문명 - * @property entpSeq 업체 일련번호 - * @property entpNo 업체 번호 - * @property itemPermitDate 아이템 허가 일자 - * @property induty 업종 - * @property prdlstStdrCode 제품표준코드 - * @property medicineType 특수약품 구분 - * @property prductType 제품유형 - * @property prductPrmisnNo 제품허가번호 - * @property itemIngrName 성분명 - * @property itemIngrCnt 성분수 - * @property bigPrdtImgUrl 대표 제품 이미지 URL - * @property permitKindCode 허가종류코드 - * @property cancelDate 취소 일자 - * @property cancelName 취소 여부 - * @property ediCode EDI코드 - * @property bizrno 사업자등록번호 - * - */ -@Serializable -data class Item( - @SerialName("BIG_PRDT_IMG_URL") var bigPrdtImgUrl: String, - @SerialName("BIZRNO") val bizrno: String?, - @SerialName("CANCEL_DATE") val cancelDate: String?, - @SerialName("CANCEL_NAME") val cancelName: String?, - @SerialName("EDI_CODE") val ediCode: String?, - @SerialName("ENTP_ENG_NAME") val entpEngName: String?, - @SerialName("ENTP_NAME") val entpName: String, - @SerialName("ENTP_NO") val entpNo: String, - @SerialName("ENTP_SEQ") val entpSeq: String, - @SerialName("INDUTY") val induty: String?, - @SerialName("ITEM_ENG_NAME") val itemEngName: String?, - @SerialName("ITEM_INGR_CNT") val itemIngrCnt: String, - @SerialName("ITEM_INGR_NAME") val itemIngrName: String, - @SerialName("ITEM_NAME") val itemName: String, - @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String, - @SerialName("ITEM_SEQ") val itemSeq: String, - @SerialName("PERMIT_KIND_CODE") val permitKindCode: String?, - @SerialName("PRDLST_STDR_CODE") val prdlstStdrCode: String?, - @SerialName("PRDUCT_PRMISN_NO") val prductPrmisnNo: String?, - @SerialName("PRDUCT_TYPE") val prductType: String, - @SerialName("SPCLTY_PBLC") val medicineType: String, -) +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetailInfo.kt b/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetail.kt similarity index 97% rename from core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetailInfo.kt rename to core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetail.kt index b5353c7e0..bf1a9b44f 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetailInfo.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetail.kt @@ -53,7 +53,7 @@ import java.time.LocalDate * @param medicineIdInServer AWS에 저장된 의약품 ID * @param existsMedicineIdInServer AWS에 저장된 의약품 ID가 있는지 여부 */ -data class MedicineDetailInfo( +data class MedicineDetail( val atcCode: String, val barCode: String, val businessRegistrationNumber: String, @@ -100,7 +100,7 @@ data class MedicineDetailInfo( val existsMedicineIdInServer: Boolean, ) -fun MedicineDetailInfoResponse.Body.Item.toMedicineDetailInfoDto(medicineIdInServer: Long = 0L) = MedicineDetailInfo( +fun MedicineDetailInfoResponse.Item.toMedicineDetail(medicineIdInServer: Long = 0L) = MedicineDetail( atcCode = atcCode, barCode = barCode, businessRegistrationNumber = businessRegistrationNumber, diff --git a/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetailInfoResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetailInfoResponse.kt index 7945fdeb5..2b16446b0 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetailInfoResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetailInfoResponse.kt @@ -1,117 +1,106 @@ package com.android.mediproject.core.model.medicine.medicinedetailinfo -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable /** * 의약품 상세 허가 정보 응답 - * - * @param body */ @Serializable -data class MedicineDetailInfoResponse( - @SerialName("body") val body: Body, -) : DataGoKrBaseResponse() { +class MedicineDetailInfoResponse : DataGoKrResponse() { + /** + * 의약품 상세 허가 정보 + * + * @param atcCode ATC 코드 + * @param barCode 바코드 + * @param businessRegistrationNumber 사업자등록번호 + * @param cancelDate 취소일자 + * @param cancelName 취소명 + * @param changeDate 변경일자 + * @param chart 성상 + * @param consignmentManufacturer 제조및수입사 + * @param docText 효능효과 + * @param ediCode EDI코드 + * @param eeDocData 의약품 효능효과 + * @param eeDocId 의약품 효능효과 문서의 식별자(ID)입니다. + * @param entpEnglishName 제조사의 영문 이름입니다. + * @param entpName 제조사의 이름입니다. + * @param entpNumber 제조사의 번호입니다. + * @param etcOtcCode 전문의약품 코드입니다. + * @param gbnName GBN(General Batch Number)의 이름입니다. + * @param industryType 산업 유형입니다. 이 경우에는 '의약품'이라고 명시되어 있습니다. + * @param ingredientName 성분 이름입니다. + * @param insertFileUrl 삽입 파일의 URL입니다. + * @param itemEnglishName 제품의 영문 이름입니다. + * @param itemName 제품 이름입니다. + * @param itemPermitDate 제품 허가 날짜입니다. + * @param itemSequence 제품 시퀀스 번호입니다. + * @param mainIngredientEnglish 주성분의 영문 이름입니다. + * @param mainItemIngredient 주성분입니다. + * @param makeMaterialFlag 제조재료 플래그입니다. 완제의약품을 나타냅니다. + * @param materialName 재료 이름입니다. + * @param narcoticKindCode 마약 종류 코드입니다. + * @param nbDocData NB 문서 데이터입니다. + * @param nbDocId NB 문서의 식별자(ID)입니다. + * @param newDrugClassName 새로운 약물 분류 이름입니다. + * @param packUnit 패키지 단위입니다. + * @param permitKindName 허가 종류 이름입니다. + * @param pnDocData PN 문서 데이터입니다. + * @param reexamDate 재심사 날짜입니다. + * @param reexamTarget 재심사 대상입니다. + * @param storageMethod 저장 방법입니다. + * @param totalContent 총 함량입니다. + * @param udDocData UD 문서 데이터입니다. + * @param uDDOCID UD 문서의 식별자(ID)입니다. + * @param validTerm 유효 기간입니다. 제조일로부터의 개월 수를 나타냅니다. + */ @Serializable - data class Body( - @SerialName("items") val items: List, @SerialName("numOfRows") val numOfRows: Int, // 100 - @SerialName("pageNo") val pageNo: Int, // 1 - @SerialName("totalCount") val totalCount: Int, // 1 - ) { - /** - * 의약품 상세 허가 정보 - * - * @param atcCode ATC 코드 - * @param barCode 바코드 - * @param businessRegistrationNumber 사업자등록번호 - * @param cancelDate 취소일자 - * @param cancelName 취소명 - * @param changeDate 변경일자 - * @param chart 성상 - * @param consignmentManufacturer 제조및수입사 - * @param docText 효능효과 - * @param ediCode EDI코드 - * @param eeDocData 의약품 효능효과 - * @param eeDocId 의약품 효능효과 문서의 식별자(ID)입니다. - * @param entpEnglishName 제조사의 영문 이름입니다. - * @param entpName 제조사의 이름입니다. - * @param entpNumber 제조사의 번호입니다. - * @param etcOtcCode 전문의약품 코드입니다. - * @param gbnName GBN(General Batch Number)의 이름입니다. - * @param industryType 산업 유형입니다. 이 경우에는 '의약품'이라고 명시되어 있습니다. - * @param ingredientName 성분 이름입니다. - * @param insertFileUrl 삽입 파일의 URL입니다. - * @param itemEnglishName 제품의 영문 이름입니다. - * @param itemName 제품 이름입니다. - * @param itemPermitDate 제품 허가 날짜입니다. - * @param itemSequence 제품 시퀀스 번호입니다. - * @param mainIngredientEnglish 주성분의 영문 이름입니다. - * @param mainItemIngredient 주성분입니다. - * @param makeMaterialFlag 제조재료 플래그입니다. 완제의약품을 나타냅니다. - * @param materialName 재료 이름입니다. - * @param narcoticKindCode 마약 종류 코드입니다. - * @param nbDocData NB 문서 데이터입니다. - * @param nbDocId NB 문서의 식별자(ID)입니다. - * @param newDrugClassName 새로운 약물 분류 이름입니다. - * @param packUnit 패키지 단위입니다. - * @param permitKindName 허가 종류 이름입니다. - * @param pnDocData PN 문서 데이터입니다. - * @param reexamDate 재심사 날짜입니다. - * @param reexamTarget 재심사 대상입니다. - * @param storageMethod 저장 방법입니다. - * @param totalContent 총 함량입니다. - * @param udDocData UD 문서 데이터입니다. - * @param uDDOCID UD 문서의 식별자(ID)입니다. - * @param validTerm 유효 기간입니다. 제조일로부터의 개월 수를 나타냅니다. - */ - @Serializable - data class Item( - @SerialName("ATC_CODE") val atcCode: String = "", - @SerialName("BAR_CODE") val barCode: String = "", - @SerialName("BIZRNO") val businessRegistrationNumber: String = "", - @SerialName("CANCEL_DATE") val cancelDate: String = "", - @SerialName("CANCEL_NAME") val cancelName: String = "", - @SerialName("CHANGE_DATE") val changeDate: String = "", - @SerialName("CHART") val chart: String = "", - @SerialName("CNSGN_MANUF") val consignmentManufacturer: String = "", - @SerialName("DOC_TEXT") val docText: String = "", - @SerialName("EDI_CODE") val ediCode: String = "", - @SerialName("EE_DOC_DATA") val eeDocData: String = "", - @SerialName("EE_DOC_ID") val eeDocId: String = "", - @SerialName("ENTP_ENG_NAME") val entpEnglishName: String = "", - @SerialName("ENTP_NAME") val entpName: String = "", - @SerialName("ENTP_NO") val entpNumber: String = "", - @SerialName("ETC_OTC_CODE") val etcOtcCode: String = "", - @SerialName("GBN_NAME") val gbnName: String = "", - @SerialName("INDUTY_TYPE") val industryType: String = "", - @SerialName("INGR_NAME") val ingredientName: String = "", - @SerialName("INSERT_FILE") val insertFileUrl: String = "", - @SerialName("ITEM_ENG_NAME") val itemEnglishName: String = "", - @SerialName("ITEM_NAME") val itemName: String = "", - @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", - @SerialName("ITEM_SEQ") val itemSequence: String = "", - @SerialName("MAIN_INGR_ENG") val mainIngredientEnglish: String = "", - @SerialName("MAIN_ITEM_INGR") val mainItemIngredient: String = "", - @SerialName("MAKE_MATERIAL_FLAG") val makeMaterialFlag: String = "", - @SerialName("MATERIAL_NAME") val materialName: String = "", - @SerialName("NARCOTIC_KIND_CODE") val narcoticKindCode: String = "", - @SerialName("NB_DOC_DATA") val nbDocData: String = "", - @SerialName("NB_DOC_ID") val nbDocId: String = "", - @SerialName("NEWDRUG_CLASS_NAME") val newDrugClassName: String = "", - @SerialName("PACK_UNIT") val packUnit: String = "", - @SerialName("PERMIT_KIND_NAME") val permitKindName: String = "", - @SerialName("PN_DOC_DATA") val pnDocData: String = "", - @SerialName("REEXAM_DATE") val reexamDate: String = "", - @SerialName("REEXAM_TARGET") val reexamTarget: String = "", - @SerialName("STORAGE_METHOD") val storageMethod: String = "", - @SerialName("TOTAL_CONTENT") val totalContent: String = "", - @SerialName("UD_DOC_DATA") val udDocData: String = "", - @SerialName("UD_DOC_ID") val uDDOCID: String = "", - @SerialName("VALID_TERM") val validTerm: String = "", - ) - } + data class Item( + @SerialName("ATC_CODE") val atcCode: String = "", + @SerialName("BAR_CODE") val barCode: String = "", + @SerialName("BIZRNO") val businessRegistrationNumber: String = "", + @SerialName("CANCEL_DATE") val cancelDate: String = "", + @SerialName("CANCEL_NAME") val cancelName: String = "", + @SerialName("CHANGE_DATE") val changeDate: String = "", + @SerialName("CHART") val chart: String = "", + @SerialName("CNSGN_MANUF") val consignmentManufacturer: String = "", + @SerialName("DOC_TEXT") val docText: String = "", + @SerialName("EDI_CODE") val ediCode: String = "", + @SerialName("EE_DOC_DATA") val eeDocData: String = "", + @SerialName("EE_DOC_ID") val eeDocId: String = "", + @SerialName("ENTP_ENG_NAME") val entpEnglishName: String = "", + @SerialName("ENTP_NAME") val entpName: String = "", + @SerialName("ENTP_NO") val entpNumber: String = "", + @SerialName("ETC_OTC_CODE") val etcOtcCode: String = "", + @SerialName("GBN_NAME") val gbnName: String = "", + @SerialName("INDUTY_TYPE") val industryType: String = "", + @SerialName("INGR_NAME") val ingredientName: String = "", + @SerialName("INSERT_FILE") val insertFileUrl: String = "", + @SerialName("ITEM_ENG_NAME") val itemEnglishName: String = "", + @SerialName("ITEM_NAME") val itemName: String = "", + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", + @SerialName("ITEM_SEQ") val itemSequence: String = "", + @SerialName("MAIN_INGR_ENG") val mainIngredientEnglish: String = "", + @SerialName("MAIN_ITEM_INGR") val mainItemIngredient: String = "", + @SerialName("MAKE_MATERIAL_FLAG") val makeMaterialFlag: String = "", + @SerialName("MATERIAL_NAME") val materialName: String = "", + @SerialName("NARCOTIC_KIND_CODE") val narcoticKindCode: String = "", + @SerialName("NB_DOC_DATA") val nbDocData: String = "", + @SerialName("NB_DOC_ID") val nbDocId: String = "", + @SerialName("NEWDRUG_CLASS_NAME") val newDrugClassName: String = "", + @SerialName("PACK_UNIT") val packUnit: String = "", + @SerialName("PERMIT_KIND_NAME") val permitKindName: String = "", + @SerialName("PN_DOC_DATA") val pnDocData: String = "", + @SerialName("REEXAM_DATE") val reexamDate: String = "", + @SerialName("REEXAM_TARGET") val reexamTarget: String = "", + @SerialName("STORAGE_METHOD") val storageMethod: String = "", + @SerialName("TOTAL_CONTENT") val totalContent: String = "", + @SerialName("UD_DOC_DATA") val udDocData: String = "", + @SerialName("UD_DOC_ID") val uDDOCID: String = "", + @SerialName("VALID_TERM") val validTerm: String = "", + ) } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListItemDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListItemDto.kt index d19a017ce..6df9e630f 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListItemDto.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListItemDto.kt @@ -40,7 +40,7 @@ data class AdminActionListItemDto( var onClick: (() -> Unit)? = null, ) : Parcelable -fun AdminActionListResponse.Body.Item.toDto(): AdminActionListItemDto { +fun AdminActionListResponse.Item.toDto(): AdminActionListItemDto { return AdminActionListItemDto( address = aDDR, disposition = aDMDISPSNAME, diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListResponse.kt index d9af4ab00..75bdd1135 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListResponse.kt @@ -1,7 +1,7 @@ package com.android.mediproject.core.model.remote.adminaction -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -12,51 +12,41 @@ import kotlinx.serialization.Serializable * @property header */ @Serializable -data class AdminActionListResponse( - @SerialName("body") val body: Body, -) : DataGoKrBaseResponse() { +class AdminActionListResponse : DataGoKrResponse() { + + /** + * 행정처분 목록 별 데이터 클래스 + * + * @property aDDR 소재지 + * @property aDMDISPSNAME 처분사항 + * @property aDMDISPSSEQ 행정처분 일련번호 + * @property bEFAPPLYLAW 근거법령 + * @property bizrNo 사업자등록번호 + * @property entpName 업체명 + * @property itemSeq 품목 일련번호 + * @property itemName 품목명 + * @property eNTPNO 업체번호 + * @property lASTSETTLEDATE 처분 일자 + * @property rLSENDDATE 공개 종료 일자 + * @property eXPOSECONT 위반내용 + * + */ @Serializable - data class Body( - @SerialName("items") val items: List, - @SerialName("numOfRows") val numOfRows: Int, // 15 - @SerialName("pageNo") val pageNo: Int, // 1 - @SerialName("totalCount") val totalCount: Int, // 392 - ) { - /** - * 행정처분 목록 별 데이터 클래스 - * - * @property aDDR 소재지 - * @property aDMDISPSNAME 처분사항 - * @property aDMDISPSSEQ 행정처분 일련번호 - * @property bEFAPPLYLAW 근거법령 - * @property bizrNo 사업자등록번호 - * @property entpName 업체명 - * @property itemSeq 품목 일련번호 - * @property itemName 품목명 - * @property eNTPNO 업체번호 - * @property lASTSETTLEDATE 처분 일자 - * @property rLSENDDATE 공개 종료 일자 - * @property eXPOSECONT 위반내용 - * - */ - @Serializable - data class Item( - @SerialName("ADDR") val aDDR: String, // 경기도 화성시 향남읍 제약공단3길27 - @SerialName("ADM_DISPS_NAME") - val aDMDISPSNAME: String, // ○ 의약품 ‘아빌리파이정2밀리그램(아리피프라졸)’<제28호>에 대하여 해당 품목 제조업무정지 1개월(2023. 5. 12.~2023. 6. 11.) - @SerialName("ADM_DISPS_SEQ") val aDMDISPSSEQ: String, // 2023003342 - @SerialName("BEF_APPLY_LAW") - val bEFAPPLYLAW: String, // ○「약사법」제38조제1항,「의약품 등의 안전에 관한 규칙」제48조제15호,「의약품 소량포장단위 공급에 관한 규정(식품의약품안전처 고시)」 ○「약사법」제76조제1항제3호 및 제3항,「의약품 등의 안전에 관한 규칙」제95조 관련 [별표 8] “행정처분의 기준” Ⅱ. 개별기준 제25호마목 - @SerialName("BIZRNO") val bizrNo: String?, // 2208114465 - @SerialName("ENTP_NAME") val entpName: String, // 한국오츠카제약(주) - @SerialName("ENTP_NO") val eNTPNO: String, // 19830009 - @SerialName("EXPOSE_CONT") val eXPOSECONT: String, // ○ 2021년도 의약품 소량포장단위 공급기준 미준수 - @SerialName("ITEM_NAME") val itemName: String?, // 아빌리파이정2밀리그램(아리피프라졸) - @SerialName("ITEM_SEQ") val itemSeq: String?, // 200808451 - @SerialName("LAST_SETTLE_DATE") val lASTSETTLEDATE: String, // 20230526 - @SerialName("RLS_END_DATE") val rLSENDDATE: String, // 20230910 - ) - } + data class Item( + @SerialName("ADDR") val aDDR: String, // 경기도 화성시 향남읍 제약공단3길27 + @SerialName("ADM_DISPS_NAME") val aDMDISPSNAME: String, // ○ 의약품 ‘아빌리파이정2밀리그램(아리피프라졸)’<제28호>에 대하여 해당 품목 제조업무정지 1개월(2023. 5. 12.~2023. 6. 11.) + @SerialName("ADM_DISPS_SEQ") val aDMDISPSSEQ: String, // 2023003342 + @SerialName("BEF_APPLY_LAW") + val bEFAPPLYLAW: String, // ○「약사법」제38조제1항,「의약품 등의 안전에 관한 규칙」제48조제15호,「의약품 소량포장단위 공급에 관한 규정(식품의약품안전처 고시)」 ○「약사법」제76조제1항제3호 및 제3항,「의약품 등의 안전에 관한 규칙」제95조 관련 [별표 8] “행정처분의 기준” Ⅱ. 개별기준 제25호마목 + @SerialName("BIZRNO") val bizrNo: String?, // 2208114465 + @SerialName("ENTP_NAME") val entpName: String, // 한국오츠카제약(주) + @SerialName("ENTP_NO") val eNTPNO: String, // 19830009 + @SerialName("EXPOSE_CONT") val eXPOSECONT: String, // ○ 2021년도 의약품 소량포장단위 공급기준 미준수 + @SerialName("ITEM_NAME") val itemName: String?, // 아빌리파이정2밀리그램(아리피프라졸) + @SerialName("ITEM_SEQ") val itemSeq: String?, // 200808451 + @SerialName("LAST_SETTLE_DATE") val lASTSETTLEDATE: String, // 20230526 + @SerialName("RLS_END_DATE") val rLSENDDATE: String, // 20230910 + ) } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/granule/GranuleIdentificationInfoDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/remote/granule/GranuleIdentificationInfoDto.kt index 47c440558..7787a448d 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/granule/GranuleIdentificationInfoDto.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/remote/granule/GranuleIdentificationInfoDto.kt @@ -72,7 +72,7 @@ data class GranuleIdentificationInfoDto( val thick: String?, // 7.58 ) -fun GranuleIdentificationInfoResponse.Body.Item.toDto() = GranuleIdentificationInfoDto( +fun GranuleIdentificationInfoResponse.Item.toDto() = GranuleIdentificationInfoDto( bizrNo = bizrNo, changeDate = changeDate.toLocalDate("yyyyMMdd"), chart = chart, diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/granule/GranuleIdentificationInfoResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/remote/granule/GranuleIdentificationInfoResponse.kt index 0d8197a2e..d62d0ce80 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/granule/GranuleIdentificationInfoResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/remote/granule/GranuleIdentificationInfoResponse.kt @@ -1,90 +1,83 @@ package com.android.mediproject.core.model.remote.granule -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class GranuleIdentificationInfoResponse( - @SerialName("body") val body: Body, -) : DataGoKrBaseResponse() { - @Serializable - data class Body( - val items: List = emptyList(), @SerialName("numOfRows") val numOfRows: Int, // 15 - @SerialName("pageNo") val pageNo: Int, // 1 - @SerialName("totalCount") val totalCount: Int) { - /** - * 식별 정보 - * - * @param bizrNo 사업자등록번호 - * @param changeDate 변경일자 - * @param chart 모양 - * @param className 분류명 - * @param classNo 분류번호 - * @param colorClass1 색상1 - * @param colorClass2 색상2 - * @param drugShape 의약품 모양 - * @param ediCode EDI코드 - * @param entpName 업체명 - * @param entpSeq 업체일련번호 - * @param etcOtcName 구분 - * @param formCodeName 제형코드 - * @param imgRegistTs 이미지 등록 일시 - * @param itemEngName 제품영문명 - * @param itemName 제품명 - * @param itemSeq 품목일련번호 - * @param itemImage 이미지 - * @param itemPermitDate 허가일자 - * @param lengLong 의약품 길이 - * @param lengShort 의약품 폭 - * @param lineBack 선 - * @param lineFront 선 - * @param markCodeBackImg 마크코드(뒷면) - * @param markCodeBack 마크코드(뒷면) - * @param markCodeBackAnal 마크코드(앞면) - * @param markCodeFront 마크코드(앞면) - * @param markCodeFrontImg 마크코드(앞면) - * @param markCodeFrontAnal 마크코드(앞면) - * @param printBack 인쇄(뒷면) - * @param printFront 인쇄(앞면) - * @param thick 의약품 두께 - * - */ - @Serializable - data class Item( - @SerialName("BIZRNO") val bizrNo: String, // 3038117108 - @SerialName("CHANGE_DATE") val changeDate: String, // 20230419 - @SerialName("CHART") val chart: String, // 무색 내지 연보라색의 내용물이 든 보라색의 투명한 타원형 연질캡슐 - @SerialName("CLASS_NAME") val className: String, // 항히스타민제 - @SerialName("CLASS_NO") val classNo: String, // 01410 - @SerialName("COLOR_CLASS1") val colorClass1: String, // 보라, 투명 - @SerialName("COLOR_CLASS2") val colorClass2: String?, // null - @SerialName("DRUG_SHAPE") val drugShape: String, // 타원형 - @SerialName("EDI_CODE") val ediCode: String?, // null - @SerialName("ENTP_NAME") val entpName: String, // (주)녹십자 - @SerialName("ENTP_SEQ") val entpSeq: String, // 19910005 - @SerialName("ETC_OTC_NAME") val etcOtcName: String, // 일반의약품 - @SerialName("FORM_CODE_NAME") val formCodeName: String, // 연질캡슐제, 액상 - @SerialName("IMG_REGIST_TS") val imgRegistTs: String, // 20100305 - @SerialName("ITEM_ENG_NAME") val itemEngName: String, // Allershot Soft Cap. - @SerialName("ITEM_IMAGE") val itemImage: String, // https://nedrug.mfds.go.kr/pbp/cmn/itemImageDownload/154661648918800015 - @SerialName("ITEM_NAME") val itemName: String, // 알러샷연질캡슐(세티리진염산염) - @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String, // 20090812 - @SerialName("ITEM_SEQ") val itemSeq: String, // 200906254 - @SerialName("LENG_LONG") val lengLong: String, // 12.50 - @SerialName("LENG_SHORT") val lengShort: String, // 7.58 - @SerialName("LINE_BACK") val lineBack: String?, // null - @SerialName("LINE_FRONT") val lineFront: String?, // null - @SerialName("MARK_CODE_BACK") val markCodeBack: String?, // null - @SerialName("MARK_CODE_BACK_ANAL") val markCodeBackAnal: String, - @SerialName("MARK_CODE_BACK_IMG") val markCodeBackImg: String, - @SerialName("MARK_CODE_FRONT") val markCodeFront: String?, // null - @SerialName("MARK_CODE_FRONT_ANAL") val markCodeFrontAnal: String, - @SerialName("MARK_CODE_FRONT_IMG") val markCodeFrontImg: String, - @SerialName("PRINT_BACK") val printBack: String?, // null - @SerialName("PRINT_FRONT") val printFront: String?, // A-S - @SerialName("THICK") val thick: String?) - } +class GranuleIdentificationInfoResponse : DataGoKrResponse() { -} \ No newline at end of file + /** + * 식별 정보 + * + * @param bizrNo 사업자등록번호 + * @param changeDate 변경일자 + * @param chart 모양 + * @param className 분류명 + * @param classNo 분류번호 + * @param colorClass1 색상1 + * @param colorClass2 색상2 + * @param drugShape 의약품 모양 + * @param ediCode EDI코드 + * @param entpName 업체명 + * @param entpSeq 업체일련번호 + * @param etcOtcName 구분 + * @param formCodeName 제형코드 + * @param imgRegistTs 이미지 등록 일시 + * @param itemEngName 제품영문명 + * @param itemName 제품명 + * @param itemSeq 품목일련번호 + * @param itemImage 이미지 + * @param itemPermitDate 허가일자 + * @param lengLong 의약품 길이 + * @param lengShort 의약품 폭 + * @param lineBack 선 + * @param lineFront 선 + * @param markCodeBackImg 마크코드(뒷면) + * @param markCodeBack 마크코드(뒷면) + * @param markCodeBackAnal 마크코드(앞면) + * @param markCodeFront 마크코드(앞면) + * @param markCodeFrontImg 마크코드(앞면) + * @param markCodeFrontAnal 마크코드(앞면) + * @param printBack 인쇄(뒷면) + * @param printFront 인쇄(앞면) + * @param thick 의약품 두께 + * + */ + @Serializable + data class Item( + @SerialName("BIZRNO") val bizrNo: String, // 3038117108 + @SerialName("CHANGE_DATE") val changeDate: String, // 20230419 + @SerialName("CHART") val chart: String, // 무색 내지 연보라색의 내용물이 든 보라색의 투명한 타원형 연질캡슐 + @SerialName("CLASS_NAME") val className: String, // 항히스타민제 + @SerialName("CLASS_NO") val classNo: String, // 01410 + @SerialName("COLOR_CLASS1") val colorClass1: String, // 보라, 투명 + @SerialName("COLOR_CLASS2") val colorClass2: String?, // null + @SerialName("DRUG_SHAPE") val drugShape: String, // 타원형 + @SerialName("EDI_CODE") val ediCode: String?, // null + @SerialName("ENTP_NAME") val entpName: String, // (주)녹십자 + @SerialName("ENTP_SEQ") val entpSeq: String, // 19910005 + @SerialName("ETC_OTC_NAME") val etcOtcName: String, // 일반의약품 + @SerialName("FORM_CODE_NAME") val formCodeName: String, // 연질캡슐제, 액상 + @SerialName("IMG_REGIST_TS") val imgRegistTs: String, // 20100305 + @SerialName("ITEM_ENG_NAME") val itemEngName: String, // Allershot Soft Cap. + @SerialName("ITEM_IMAGE") val itemImage: String, // https://nedrug.mfds.go.kr/pbp/cmn/itemImageDownload/154661648918800015 + @SerialName("ITEM_NAME") val itemName: String, // 알러샷연질캡슐(세티리진염산염) + @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String, // 20090812 + @SerialName("ITEM_SEQ") val itemSeq: String, // 200906254 + @SerialName("LENG_LONG") val lengLong: String, // 12.50 + @SerialName("LENG_SHORT") val lengShort: String, // 7.58 + @SerialName("LINE_BACK") val lineBack: String?, // null + @SerialName("LINE_FRONT") val lineFront: String?, // null + @SerialName("MARK_CODE_BACK") val markCodeBack: String?, // null + @SerialName("MARK_CODE_BACK_ANAL") val markCodeBackAnal: String, + @SerialName("MARK_CODE_BACK_IMG") val markCodeBackImg: String, + @SerialName("MARK_CODE_FRONT") val markCodeFront: String?, // null + @SerialName("MARK_CODE_FRONT_ANAL") val markCodeFrontAnal: String, + @SerialName("MARK_CODE_FRONT_IMG") val markCodeFrontImg: String, + @SerialName("PRINT_BACK") val printBack: String?, // null + @SerialName("PRINT_FRONT") val printFront: String?, // A-S + @SerialName("THICK") val thick: String?, + ) +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspensionItemDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspension.kt similarity index 85% rename from core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspensionItemDto.kt rename to core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspension.kt index 0aee0ef8a..3440fa659 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspensionItemDto.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspension.kt @@ -23,7 +23,7 @@ import java.time.format.DateTimeFormatter * @property usagePeriod 유효기한 * */ -data class DetailRecallSuspensionItemDto( +data class DetailRecallSuspension( val bizrNo: String, // 1278641862 val enterprise: String, // (주)자연세상 val enterpriseAddress: String, // 경기도 포천시 소흘읍 호국로481번길 21-16 @@ -40,15 +40,15 @@ data class DetailRecallSuspensionItemDto( val usagePeriod: String?, // 제조일로부터36개월 ) -fun DetailRecallSuspensionResponse.Body.Item.Item.toRecallSuspensionItemDto(): DetailRecallSuspensionItemDto = DetailRecallSuspensionItemDto( +fun DetailRecallSuspensionResponse.Item.Item.toRecallSuspension(): DetailRecallSuspension = DetailRecallSuspension( bizrNo = bizrNo ?: "", - enterprise = eNTRPS ?: "", - enterpriseAddress = eNTRPSADRES ?: "", - enterpriseTel = eNTRPSTELNO ?: "", + enterprise = enterprise ?: "", + enterpriseAddress = entpAddress ?: "", + enterpriseTel = entpTel ?: "", manufacturedDate = manufacturedDate?.run { LocalDate.parse(this, dateFormat) }, manufactureNo = manufactureId ?: "", openEndDate = LocalDate.parse(openEndDate, dateFormat), - packageUnit = pACKNGUNIT ?: "", + packageUnit = packageUnit ?: "", product = pRDUCT ?: "", recallCommandDate = recalLCommandDate.run { LocalDate.parse(this, dateFormat) }, rm = rM, diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspensionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspensionResponse.kt index 706358a2b..3c2f747db 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspensionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspensionResponse.kt @@ -1,7 +1,7 @@ package com.android.mediproject.core.model.remote.recall -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -14,60 +14,49 @@ import kotlinx.serialization.Serializable * */ @Serializable -data class DetailRecallSuspensionResponse( - @SerialName("body") val body: Body, -) : DataGoKrBaseResponse() { +class DetailRecallSuspensionResponse : DataGoKrResponse() { @Serializable - data class Body( - @SerialName("items") val items: List, - @SerialName("numOfRows") val numOfRows: Int, // 15 - @SerialName("pageNo") val pageNo: Int, // 1 - @SerialName("totalCount") val totalCount: Int, // 1 + data class Item( + @SerialName("item") val item: Item, ) { + + /** + * 상세 리콜 폐기 데이터 + * + * @property bizrNo 사업자등록번호 + * @property enterprise 업체명 + * @property entpAddress 업체 주소 + * @property entpTel 업체 전화번호 + * @property manufacturedDate 제조일자 + * @property manufactureId 제조번호 + * @property openEndDate 폐기일자 + * @property packageUnit 포장단위 + * @property pRDUCT 제품명 + * @property recalLCommandDate 리콜명령일자 + * @property rM 비고 + * @property approvalDate 폐기명령일자 + * @property retrievalReason 폐기사유 + * @property usagePeriod 기간 + * + */ @Serializable data class Item( - @SerialName("item") val item: Item, - ) { - - /** - * 상세 리콜 폐기 데이터 - * - * @property bizrNo 사업자등록번호 - * @property eNTRPS 업체명 - * @property eNTRPSADRES 업체 주소 - * @property eNTRPSTELNO 업체 전화번호 - * @property manufacturedDate 제조일자 - * @property manufactureId 제조번호 - * @property openEndDate 폐기일자 - * @property pACKNGUNIT 포장단위 - * @property pRDUCT 제품명 - * @property recalLCommandDate 리콜명령일자 - * @property rM 비고 - * @property approvalDate 폐기명령일자 - * @property retrievalReason 폐기사유 - * @property usagePeriod 기간 - * - */ - @Serializable - data class Item( - @SerialName("BIZRNO") val bizrNo: String?, // 1278641862 - @SerialName("ENTRPS") val eNTRPS: String?, // (주)자연세상 - @SerialName("ENTRPS_ADRES") val eNTRPSADRES: String?, // 경기도 포천시 소흘읍 호국로481번길 21-16 - @SerialName("ENTRPS_TELNO") val eNTRPSTELNO: String?, // 0315443091 - @SerialName("MNFCTUR_DT") val manufacturedDate: String?, // 20211001 - @SerialName("MNFCTUR_NO") val manufactureId: String?, // 330-061-21 - @SerialName("OPEN_END_DATE") val openEndDate: String, // 20250922 - @SerialName("PACKNG_UNIT") val pACKNGUNIT: String?, // 자사포장단위 - @SerialName("PRDUCT") val pRDUCT: String?, // 자연세상갈근 - @SerialName("RECALL_COMMAND_DATE") val recalLCommandDate: String, // 20220923 - @SerialName("RM") val rM: String?, // null - @SerialName("RTRVL_CMMND_DT") val approvalDate: String?, // 20221004000000 - @SerialName("RTRVL_RESN") val retrievalReason: String?, // 정량법 부적합 - @SerialName("USGPD") val usagePeriod: String?, // 제조일로부터36개월 - ) - } - - + @SerialName("BIZRNO") val bizrNo: String?, // 1278641862 + @SerialName("ENTRPS") val enterprise: String?, // (주)자연세상 + @SerialName("ENTRPS_ADRES") val entpAddress: String?, // 경기도 포천시 소흘읍 호국로481번길 21-16 + @SerialName("ENTRPS_TELNO") val entpTel: String?, // 0315443091 + @SerialName("MNFCTUR_DT") val manufacturedDate: String?, // 20211001 + @SerialName("MNFCTUR_NO") val manufactureId: String?, // 330-061-21 + @SerialName("OPEN_END_DATE") val openEndDate: String, // 20250922 + @SerialName("PACKNG_UNIT") val packageUnit: String?, // 자사포장단위 + @SerialName("PRDUCT") val pRDUCT: String?, // 자연세상갈근 + @SerialName("RECALL_COMMAND_DATE") val recalLCommandDate: String, // 20220923 + @SerialName("RM") val rM: String?, // null + @SerialName("RTRVL_CMMND_DT") val approvalDate: String?, // 20221004000000 + @SerialName("RTRVL_RESN") val retrievalReason: String?, // 정량법 부적합 + @SerialName("USGPD") val usagePeriod: String?, // 제조일로부터36개월 + ) } + } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/RecallSuspensionListItemDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/RecallSuspension.kt similarity index 84% rename from core/model/src/main/java/com/android/mediproject/core/model/remote/recall/RecallSuspensionListItemDto.kt rename to core/model/src/main/java/com/android/mediproject/core/model/remote/recall/RecallSuspension.kt index 4fec1629f..f4d8f31da 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/RecallSuspensionListItemDto.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/RecallSuspension.kt @@ -17,7 +17,7 @@ import java.time.LocalDate * @property reason 폐기 사유 * */ -data class RecallSuspensionListItemDto( +data class RecallSuspension( val enfrcYn: String?, // N val entrps: String, // 동국제약(주) val itemSeq: String, // 201208461 @@ -25,10 +25,10 @@ data class RecallSuspensionListItemDto( val recallCommandDate: LocalDate?, // 20230504 val destructionOrderDate: LocalDate?, // 20230503000000 val reason: String, // 안정성 시험결과 NDMA 기준 초과에 따른 사전예방적 조치로 시중 유통품에 대해 영업자회수 - var onClick: ((RecallSuspensionListItemDto) -> Unit)? = null, + var onClick: ((RecallSuspension) -> Unit)? = null, ) -fun RecallSuspensionListResponse.Body.Item.Item.toRecallSuspensionItemDto() = RecallSuspensionListItemDto( +fun RecallSuspensionListResponse.Item.Item.toRecallSuspension() = RecallSuspension( enfrcYn = enfrcYn, entrps = entrps ?: "", itemSeq = itemSeq ?: "", diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/RecallSuspensionListResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/RecallSuspensionListResponse.kt index f065757e0..6b4fdadb6 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/RecallSuspensionListResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/RecallSuspensionListResponse.kt @@ -1,7 +1,7 @@ package com.android.mediproject.core.model.remote.recall -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -13,47 +13,37 @@ import kotlinx.serialization.Serializable * */ @Serializable -data class RecallSuspensionListResponse( - @SerialName("body") val body: Body, -) : DataGoKrBaseResponse() { +class RecallSuspensionListResponse : DataGoKrResponse() { @Serializable - data class Body( - @SerialName("items") val items: List, - @SerialName("numOfRows") val numOfRows: Int, // 15 - @SerialName("pageNo") val pageNo: Int, // 1 - @SerialName("totalCount") val totalCount: Int // 1015 + data class Item( + @SerialName("item") val item: Item, ) { + /** + * 리콜 폐기 목록 별 데이터 클래스 + * + * @property bizrno 사업자등록번호 + * @property enfrcYn 강제여부 + * @property entrps 업체명 + * @property itemSeq 일련번호 + * @property product 제품명 + * @property recallCommandDate 리콜 명령 일자 + * @property rtrlCommandDt 폐기 명령 일자 + * @property rtrvlResn 폐기 사유 + * + */ @Serializable data class Item( - @SerialName("item") val item: Item - ) { - - /** - * 리콜 폐기 목록 별 데이터 클래스 - * - * @property bizrno 사업자등록번호 - * @property enfrcYn 강제여부 - * @property entrps 업체명 - * @property itemSeq 일련번호 - * @property product 제품명 - * @property recallCommandDate 리콜 명령 일자 - * @property rtrlCommandDt 폐기 명령 일자 - * @property rtrvlResn 폐기 사유 - * - */ - @Serializable - data class Item( - @SerialName("BIZRNO") val bizrno: String?, // 3018508241 - @SerialName("ENFRC_YN") val enfrcYn: String?, // N - @SerialName("ENTRPS") val entrps: String?, // 동국제약(주) - @SerialName("ITEM_SEQ") val itemSeq: String?, // 201208461 - @SerialName("PRDUCT") val product: String?, // 니자틴캡슐(니자티딘) - @SerialName("RECALL_COMMAND_DATE") val recallCommandDate: String?, // 20230504 - @SerialName("RTRVL_CMMND_DT") val rtrlCommandDt: String?, // 20230503000000 - @SerialName("RTRVL_RESN") val rtrvlResn: String? // 안정성 시험결과 NDMA 기준 초과에 따른 사전예방적 조치로 시중 유통품에 대해 영업자회수 - ) - } + @SerialName("BIZRNO") val bizrno: String?, // 3018508241 + @SerialName("ENFRC_YN") val enfrcYn: String?, // N + @SerialName("ENTRPS") val entrps: String?, // 동국제약(주) + @SerialName("ITEM_SEQ") val itemSeq: String?, // 201208461 + @SerialName("PRDUCT") val product: String?, // 니자틴캡슐(니자티딘) + @SerialName("RECALL_COMMAND_DATE") val recallCommandDate: String?, // 20230504 + @SerialName("RTRVL_CMMND_DT") val rtrlCommandDt: String?, // 20230503000000 + @SerialName("RTRVL_RESN") val rtrvlResn: String?, // 안정성 시험결과 NDMA 기준 초과에 따른 사전예방적 조치로 시중 유통품에 대해 영업자회수 + ) } -} \ No newline at end of file + +} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/ResponseWrapper.kt b/core/network/src/main/java/com/android/mediproject/core/network/ResponseWrapper.kt index 48225e6da..44493f2c7 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/ResponseWrapper.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/ResponseWrapper.kt @@ -1,6 +1,6 @@ package com.android.mediproject.core.network -import com.android.mediproject.core.model.DataGoKrBaseResponse +import com.android.mediproject.core.model.DataGoKrResponse import com.android.mediproject.core.model.toResult import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json @@ -31,7 +31,7 @@ private inline fun String.parse(): Result = try { Result.failure(e) } -internal inline fun Response.onStringResponse(): Result> { +internal inline fun > Response.onStringResponse(): Result> { return if (isSuccessful) { body()?.parse()?.getOrNull()?.toResult()?.fold( onSuccess = { Result.success(PairResponse(it, body()!!)) }, @@ -42,7 +42,7 @@ internal inline fun Response.onString } } -internal inline fun Response.onDataGokrResponse(): Result = +internal inline fun > Response.onDataGokrResponse(): Result = if (isSuccessful) body()?.toResult() ?: Result.failure(Throwable("Response Body is Null")) else Result.failure(errorBody()?.string()?.let { Throwable(it) } ?: Throwable("Response Error")) diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/granule/GranuleIdentificationDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/granule/GranuleIdentificationDataSourceImpl.kt index 616df2842..6f945d72b 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/granule/GranuleIdentificationDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/granule/GranuleIdentificationDataSourceImpl.kt @@ -2,7 +2,6 @@ package com.android.mediproject.core.network.datasource.granule import com.android.mediproject.core.model.remote.granule.GranuleIdentificationInfoResponse import com.android.mediproject.core.model.toResult -import com.android.mediproject.core.network.module.DataGoKrNetworkApi import com.android.mediproject.core.network.module.datagokr.DataGoKrNetworkApi import com.android.mediproject.core.network.onResponse import kotlinx.coroutines.flow.Flow diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/medicineapproval/MedicineApprovalDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/medicineapproval/MedicineApprovalDataSourceImpl.kt index 59c76bcb2..2160f4c2e 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/medicineapproval/MedicineApprovalDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/medicineapproval/MedicineApprovalDataSourceImpl.kt @@ -6,7 +6,6 @@ import com.android.mediproject.core.model.medicine.medicinedetailinfo.MedicineDe import com.android.mediproject.core.model.medicine.medicinedetailinfo.cache.MedicineCacheEntity import com.android.mediproject.core.model.toResult import com.android.mediproject.core.network.datasource.image.GoogleSearchDataSource -import com.android.mediproject.core.network.module.DataGoKrNetworkApi import com.android.mediproject.core.network.module.datagokr.DataGoKrNetworkApi import com.android.mediproject.core.network.module.safetyEncode import com.android.mediproject.core.network.onResponse diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/medicineapproval/MedicineApprovalListDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/medicineapproval/MedicineApprovalListDataSourceImpl.kt index 218a63eb1..7f93a5e69 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/medicineapproval/MedicineApprovalListDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/medicineapproval/MedicineApprovalListDataSourceImpl.kt @@ -3,7 +3,7 @@ package com.android.mediproject.core.network.datasource.medicineapproval import androidx.paging.PagingSource import androidx.paging.PagingState import com.android.mediproject.core.common.DATA_GO_KR_PAGE_SIZE -import com.android.mediproject.core.model.medicine.medicineapproval.Item +import com.android.mediproject.core.model.medicine.medicineapproval.MedicineApprovalListResponse.Item class MedicineApprovalListDataSourceImpl( private val medicineApprovalDataSource: MedicineApprovalDataSource, @@ -28,21 +28,24 @@ class MedicineApprovalListDataSourceImpl( entpName = entpName, medicationType = medicationType, pageNo = currentPage, - ).fold(onSuccess = { - val nextKey = it.body.let { body -> - if (body.items.size < DATA_GO_KR_PAGE_SIZE) null - else currentPage + 1 - } + ).fold( + onSuccess = { + val nextKey = it.body.let { body -> + if (body.items.size < DATA_GO_KR_PAGE_SIZE) null + else currentPage + 1 + } - LoadResult.Page( - data = it.body.items, - prevKey = null, - nextKey = nextKey, - ) - }, onFailure = { LoadResult.Error(it) }) + LoadResult.Page( + data = it.body.items, + prevKey = null, + nextKey = nextKey, + ) + }, + onFailure = { LoadResult.Error(it) }, + ) } catch (e: Exception) { LoadResult.Error(e) } } -} \ No newline at end of file +} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/adminaction/AdminActionDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/adminaction/AdminActionDataSourceImpl.kt index 1d5cb9e92..366f2a2d1 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/adminaction/AdminActionDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/adminaction/AdminActionDataSourceImpl.kt @@ -3,7 +3,6 @@ package com.android.mediproject.core.network.datasource.penalties.adminaction import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers import com.android.mediproject.core.model.toResult -import com.android.mediproject.core.network.module.DataGoKrNetworkApi import com.android.mediproject.core.network.module.datagokr.DataGoKrNetworkApi import com.android.mediproject.core.network.onResponse import kotlinx.coroutines.CoroutineDispatcher diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/adminaction/AdminActionListDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/adminaction/AdminActionListDataSourceImpl.kt index 790856c96..cba98cdb0 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/adminaction/AdminActionListDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/adminaction/AdminActionListDataSourceImpl.kt @@ -9,35 +9,38 @@ import javax.inject.Inject class AdminActionListDataSourceImpl @Inject constructor( private val adminActionDataSource: AdminActionDataSource, -) : PagingSource() { +) : PagingSource() { - override fun getRefreshKey(state: PagingState): Int? { + override fun getRefreshKey(state: PagingState): Int? { return state.anchorPosition?.let { anchorPosition -> val anchorPage = state.closestPageToPosition(anchorPosition) anchorPage?.prevKey?.plus(1) ?: anchorPage?.nextKey?.minus(1) } } - override suspend fun load(params: LoadParams): LoadResult { + override suspend fun load(params: LoadParams): LoadResult { val currentPage = params.key ?: 1 return try { - adminActionDataSource.getAdminActionList(currentPage).fold(onSuccess = { response -> - val nextKey = response.body.let { body -> - if (body.items.count() < DATA_GO_KR_PAGE_SIZE) null - else currentPage + 1 - } - LoadResult.Page( - data = response.body.items, - prevKey = null, - nextKey = nextKey, - ) - }, onFailure = { - LoadResult.Error(it) - }) + adminActionDataSource.getAdminActionList(currentPage).fold( + onSuccess = { response -> + val nextKey = response.body.let { body -> + if (body.items.size < DATA_GO_KR_PAGE_SIZE) null + else currentPage + 1 + } + LoadResult.Page( + data = response.body.items, + prevKey = null, + nextKey = nextKey, + ) + }, + onFailure = { + LoadResult.Error(it) + }, + ) } catch (e: Exception) { LoadResult.Error(e) } } -} \ No newline at end of file +} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/recallsuspension/RecallSuspensionDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/recallsuspension/RecallSuspensionDataSourceImpl.kt index 590e5edfb..15b54f087 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/recallsuspension/RecallSuspensionDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/recallsuspension/RecallSuspensionDataSourceImpl.kt @@ -1,47 +1,25 @@ package com.android.mediproject.core.network.datasource.penalties.recallsuspension -import com.android.mediproject.core.common.network.Dispatcher -import com.android.mediproject.core.common.network.MediDispatchers import com.android.mediproject.core.model.remote.recall.DetailRecallSuspensionResponse -import com.android.mediproject.core.model.toResult -import com.android.mediproject.core.network.module.DataGoKrNetworkApi -import com.android.mediproject.core.network.onResponse +import com.android.mediproject.core.network.module.datagokr.DataGoKrNetworkApi +import com.android.mediproject.core.network.onDataGokrResponse import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.channelFlow import javax.inject.Inject class RecallSuspensionDataSourceImpl @Inject constructor( - @Dispatcher(MediDispatchers.IO) private val ioDispatcher: CoroutineDispatcher, + private val ioDispatcher: CoroutineDispatcher, private val dataGoKrNetworkApi: DataGoKrNetworkApi, ) : RecallSuspensionDataSource { override fun getDetailRecallSuspensionInfo( company: String?, product: String?, - ): Flow> = flow { - dataGoKrNetworkApi.getDetailRecallSuspensionInfo(company = company, product = product) - .onResponse().fold( - onSuccess = { response -> - response.toResult() - }, - onFailure = { - Result.failure(it) - }, - ).also { - emit(it) - } + ): Flow> = channelFlow { + send(dataGoKrNetworkApi.getDetailRecallSuspensionInfo(company = company, product = product).onDataGokrResponse()) } override suspend fun getRecallSuspensionList(pageNo: Int, numOfRows: Int) = - dataGoKrNetworkApi.getRecallSuspensionList(pageNo = pageNo, numOfRows = numOfRows) - .onResponse().fold( - onSuccess = { response -> - response.toResult() - }, - onFailure = { - Result.failure(it) - }, - ) - + dataGoKrNetworkApi.getRecallSuspensionList(pageNo = pageNo, numOfRows = numOfRows).onDataGokrResponse() } diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/recallsuspension/RecallSuspensionListDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/recallsuspension/RecallSuspensionListDataSourceImpl.kt index c994d409e..416f343e6 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/recallsuspension/RecallSuspensionListDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/recallsuspension/RecallSuspensionListDataSourceImpl.kt @@ -3,42 +3,45 @@ package com.android.mediproject.core.network.datasource.penalties.recallsuspensi import androidx.paging.PagingSource import androidx.paging.PagingState import com.android.mediproject.core.common.DATA_GO_KR_PAGE_SIZE -import com.android.mediproject.core.model.remote.recall.RecallSuspensionListResponse.Body.Item.Item +import com.android.mediproject.core.model.remote.recall.RecallSuspensionListResponse.Item import javax.inject.Inject class RecallSuspensionListDataSourceImpl @Inject constructor( private val recallSuspensionDataSource: RecallSuspensionDataSource, -) : PagingSource() { +) : PagingSource() { - override fun getRefreshKey(state: PagingState): Int? { + override fun getRefreshKey(state: PagingState): Int? { return state.anchorPosition?.let { anchorPosition -> val anchorPage = state.closestPageToPosition(anchorPosition) anchorPage?.prevKey?.plus(1) ?: anchorPage?.nextKey?.minus(1) } } - override suspend fun load(params: LoadParams): LoadResult { + override suspend fun load(params: LoadParams): LoadResult { val currentPage = params.key ?: 1 return try { - recallSuspensionDataSource.getRecallSuspensionList(currentPage).fold(onSuccess = { response -> - val nextKey = response.body.let { body -> - if (body.items.count() < DATA_GO_KR_PAGE_SIZE) null - else currentPage + 1 - } + recallSuspensionDataSource.getRecallSuspensionList(currentPage).fold( + onSuccess = { response -> + val nextKey = response.body.let { body -> + if (body.items.size < DATA_GO_KR_PAGE_SIZE) null + else currentPage + 1 + } - LoadResult.Page( - data = response.body.items.map { item -> - item.item - }.toList(), - prevKey = null, - nextKey = nextKey, - ) - }, onFailure = { - LoadResult.Error(it) - }) + LoadResult.Page( + data = response.body.items.map { item -> + item.item + }.toList(), + prevKey = null, + nextKey = nextKey, + ) + }, + onFailure = { + LoadResult.Error(it) + }, + ) } catch (e: Exception) { LoadResult.Error(e) } } -} \ No newline at end of file +} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/user/UserDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/user/UserDataSourceImpl.kt index b644823c0..2288a3235 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/user/UserDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/user/UserDataSourceImpl.kt @@ -17,7 +17,7 @@ import javax.inject.Inject class UserDataSourceImpl @Inject constructor( private val awsNetworkApi: AwsNetworkApi, - private val aesCoder: AesCoder + private val aesCoder: AesCoder, ) : UserDataSource { @@ -48,13 +48,16 @@ class UserDataSourceImpl @Inject constructor( override suspend fun withdrawal(): Flow> = channelFlow { Log.d("wap", "UserDataSource : withdrawal()") awsNetworkApi.withdrawal().onResponse() - .fold(onSuccess = { - Log.d("wap", "dataSource : 성공") - Result.success(it) - }, onFailure = { - Log.d("wap", "dataSource : 실패 에러내용 : " + it.toString()) - Result.failure(it) - }) + .fold( + onSuccess = { + Log.d("wap", "dataSource : 성공") + Result.success(it) + }, + onFailure = { + Log.d("wap", "dataSource : 실패 에러내용 : $it") + Result.failure(it) + }, + ) .also { trySend(it) } } -} \ No newline at end of file +} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/DataGoKrNetwork.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/DataGoKrNetwork.kt index 0227eb0c9..089fc41e6 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/module/DataGoKrNetwork.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/DataGoKrNetwork.kt @@ -54,6 +54,17 @@ object DataGoKrNetwork { Retrofit.Builder().client(okHttpClient).addConverterFactory(ScalarsConverterFactory.create()).baseUrl(DATA_GO_KR_BASEURL).build() .create(DataGoKrNetworkApi::class.java) + @Provides + @Singleton + fun providesDurProductInfoNetworkApi( + @Named("dataGoKrNetworkApiWithJsonResponse") dataGoKrNetworkApi: DataGoKrNetworkApi, + ): DurProductInfoNetworkApi = dataGoKrNetworkApi + + @Provides + @Singleton + fun providesDurIngrInfoNetworkApi(@Named("dataGoKrNetworkApiWithJsonResponse") dataGoKrNetworkApi: DataGoKrNetworkApi): DurIngrInfoNetworkApi = + dataGoKrNetworkApi + // DataSource 인스턴스 --------------------------------------------------------------------------------------------------- @Provides @@ -92,11 +103,9 @@ object DataGoKrNetwork { // DUR 품목 정보 --------------------------------------------------------------------------------------------------- @Provides @Singleton - fun providesDurProductDataSource(@Named("dataGoKrNetworkApiWithJsonResponse") api: DurProductInfoNetworkApi): DurProductDataSource = - DurProductDataSourceImpl(api) + fun providesDurProductDataSource(api: DurProductInfoNetworkApi): DurProductDataSource = DurProductDataSourceImpl(api) @Provides @Singleton - fun providesDurIngrDataSource(@Named("dataGoKrNetworkApiWithJsonResponse") api: DurIngrInfoNetworkApi): DurIngrDataSource = - DurIngrDataSourceImpl(api) + fun providesDurIngrDataSource(api: DurIngrInfoNetworkApi): DurIngrDataSource = DurIngrDataSourceImpl(api) } diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/NetworkModule.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/NetworkModule.kt index 06a4ea60e..0afb68798 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/module/NetworkModule.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/NetworkModule.kt @@ -26,7 +26,6 @@ import javax.net.ssl.TrustManagerFactory import javax.net.ssl.X509TrustManager import kotlin.properties.Delegates -@OptIn(DelicateCoroutinesApi::class) @Module @InstallIn(SingletonComponent::class) class CertificateHelper @Inject constructor(@ApplicationContext context: Context) { diff --git a/core/ui/src/main/java/com/android/mediproject/core/ui/base/BaseViewModel.kt b/core/ui/src/main/java/com/android/mediproject/core/ui/base/BaseViewModel.kt index b65df2711..0082b46c8 100644 --- a/core/ui/src/main/java/com/android/mediproject/core/ui/base/BaseViewModel.kt +++ b/core/ui/src/main/java/com/android/mediproject/core/ui/base/BaseViewModel.kt @@ -1,11 +1,9 @@ package com.android.mediproject.core.ui.base import android.util.Log -import android.widget.Toast -import androidx.core.content.ContentProviderCompat.requireContext import androidx.lifecycle.ViewModel open class BaseViewModel : ViewModel() { fun log(str: String) = Log.d("wap", str) //for test -} \ No newline at end of file +} diff --git a/feature/camera/src/main/java/com/android/mediproject/feature/camera/MedicinesDetectorFragment.kt b/feature/camera/src/main/java/com/android/mediproject/feature/camera/MedicinesDetectorFragment.kt index a7fa97d85..2b4bd4295 100644 --- a/feature/camera/src/main/java/com/android/mediproject/feature/camera/MedicinesDetectorFragment.kt +++ b/feature/camera/src/main/java/com/android/mediproject/feature/camera/MedicinesDetectorFragment.kt @@ -20,7 +20,7 @@ import com.android.mediproject.feature.search.result.ai.AiSearchResultViewModel import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint import org.tensorflow.lite.task.gms.vision.detector.Detection -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted import javax.inject.Inject @AndroidEntryPoint diff --git a/feature/camera/src/main/java/com/android/mediproject/feature/camera/confirmdialog/ConfirmDialogFragment.kt b/feature/camera/src/main/java/com/android/mediproject/feature/camera/confirmdialog/ConfirmDialogFragment.kt index b127fe8e3..c04acbfad 100644 --- a/feature/camera/src/main/java/com/android/mediproject/feature/camera/confirmdialog/ConfirmDialogFragment.kt +++ b/feature/camera/src/main/java/com/android/mediproject/feature/camera/confirmdialog/ConfirmDialogFragment.kt @@ -17,7 +17,7 @@ import com.android.mediproject.feature.camera.databinding.FragmentConfirmDialogB import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.flow.collectLatest -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted @AndroidEntryPoint class ConfirmDialogFragment : DialogFragment() { diff --git a/feature/camera/src/main/java/com/android/mediproject/feature/camera/imagedialog/DetectedImageFragment.kt b/feature/camera/src/main/java/com/android/mediproject/feature/camera/imagedialog/DetectedImageFragment.kt index 977077bee..dc3679c82 100644 --- a/feature/camera/src/main/java/com/android/mediproject/feature/camera/imagedialog/DetectedImageFragment.kt +++ b/feature/camera/src/main/java/com/android/mediproject/feature/camera/imagedialog/DetectedImageFragment.kt @@ -17,7 +17,7 @@ import com.android.mediproject.feature.camera.R import com.android.mediproject.feature.camera.databinding.FragmentDetectedImageDialogBinding import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.flow.collectLatest -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted import javax.inject.Inject diff --git a/feature/comments/src/main/java/com/android/mediproject/feature/comments/commentsofamedicine/MedicineCommentsFragment.kt b/feature/comments/src/main/java/com/android/mediproject/feature/comments/commentsofamedicine/MedicineCommentsFragment.kt index cedf5cc1f..10c743b2a 100644 --- a/feature/comments/src/main/java/com/android/mediproject/feature/comments/commentsofamedicine/MedicineCommentsFragment.kt +++ b/feature/comments/src/main/java/com/android/mediproject/feature/comments/commentsofamedicine/MedicineCommentsFragment.kt @@ -20,7 +20,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted @AndroidEntryPoint class MedicineCommentsFragment : @@ -38,10 +38,12 @@ class MedicineCommentsFragment : replyHeader.isVisible = false val adapter = CommentsAdapter().apply { - setOnStateChangedListener(pagingListView.messageTextView, + setOnStateChangedListener( + pagingListView.messageTextView, pagingListView.pagingList, pagingListView.progressIndicator, - getString(R.string.emptyComments)) + getString(R.string.emptyComments), + ) } pagingListView.pagingList.apply { @@ -56,11 +58,13 @@ class MedicineCommentsFragment : reverseLayout = true } setItemViewCacheSize(0) - setRecycledViewPool(RecyclerView.RecycledViewPool().apply { - setMaxRecycledViews(CommentsAdapter.ViewType.COMMENT.ordinal, 6) - setMaxRecycledViews(CommentsAdapter.ViewType.EDITING.ordinal, 0) - setMaxRecycledViews(CommentsAdapter.ViewType.REPLY.ordinal, 6) - }) + setRecycledViewPool( + RecyclerView.RecycledViewPool().apply { + setMaxRecycledViews(CommentsAdapter.ViewType.COMMENT.ordinal, 6) + setMaxRecycledViews(CommentsAdapter.ViewType.EDITING.ordinal, 0) + setMaxRecycledViews(CommentsAdapter.ViewType.REPLY.ordinal, 6) + }, + ) this.adapter = adapter } @@ -84,51 +88,67 @@ class MedicineCommentsFragment : } is CommentActionState.CLICKED_DELETE_MY_COMMENT -> { - showDialog(R.string.requestToDeleteComment, onPositive = { - fragmentViewModel.deleteComment(action.commentId) - }, onNegative = { - - }) + showDialog( + R.string.requestToDeleteComment, + onPositive = { + fragmentViewModel.deleteComment(action.commentId) + }, + onNegative = { + + }, + ) } is CommentActionState.COMPLETED_LIKE -> { - action.result.fold(onSuccess = { - toast(getString(R.string.completedLike)) - adapter.refresh() - }, onFailure = { - toast(it.message.toString()) - }) + action.result.fold( + onSuccess = { + toast(getString(R.string.completedLike)) + adapter.refresh() + }, + onFailure = { + toast(it.message.toString()) + }, + ) } is CommentActionState.COMPLETED_APPLY_COMMENT_REPLY -> { replayInfoHeader.isVisible = false - action.result.fold(onSuccess = { - replyHeader.isVisible = false - toast(getString(R.string.appliedComment)) - adapter.refresh() - }, onFailure = { - toast(it.message.toString()) - }) + action.result.fold( + onSuccess = { + replyHeader.isVisible = false + toast(getString(R.string.appliedComment)) + adapter.refresh() + }, + onFailure = { + toast(it.message.toString()) + }, + ) } is CommentActionState.COMPLETED_APPLY_EDITED_COMMENT -> { - action.result.fold(onSuccess = { - toast(getString(R.string.appliedEditComment)) - adapter.refresh() - - }, onFailure = { - toast(it.message.toString()) - }) + action.result.fold( + onSuccess = { + toast(getString(R.string.appliedEditComment)) + adapter.refresh() + + }, + onFailure = { + toast(it.message.toString()) + }, + ) } is CommentActionState.COMPLETED_DELETE_COMMENT -> { - action.result.fold(onSuccess = { - toast(getString(R.string.deletedComment)) - adapter.refresh() - - }, onFailure = { - toast(it.message.toString()) - }) + action.result.fold( + onSuccess = { + toast(getString(R.string.deletedComment)) + adapter.refresh() + + }, + onFailure = { + toast(it.message.toString()) + }, + ) } is CommentActionState.NONE -> { @@ -174,4 +194,4 @@ class MedicineCommentsFragment : } }.create().show() } -} \ No newline at end of file +} diff --git a/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListFragment.kt b/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListFragment.kt index 23bffe004..4bd4508ff 100644 --- a/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListFragment.kt +++ b/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListFragment.kt @@ -1,6 +1,5 @@ package com.android.mediproject.feature.comments.mycommentslist -import android.content.Context import android.os.Bundle import android.view.View import androidx.fragment.app.viewModels @@ -11,7 +10,7 @@ import com.android.mediproject.core.model.comments.MyCommentDto import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.comments.databinding.FragmentMyCommentsListBinding import dagger.hilt.android.AndroidEntryPoint -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted import javax.inject.Inject @AndroidEntryPoint diff --git a/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListViewModel.kt b/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListViewModel.kt index 541117d68..b176c2c42 100644 --- a/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListViewModel.kt +++ b/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListViewModel.kt @@ -1,8 +1,8 @@ package com.android.mediproject.feature.comments.mycommentslist -import MutableEventFlow +import com.android.mediproject.core.common.viewmodel.MutableEventFlow import androidx.lifecycle.viewModelScope -import asEventFlow +import com.android.mediproject.core.common.viewmodel.asEventFlow import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch @@ -16,4 +16,4 @@ class MyCommentsListViewModel @Inject constructor() : BaseViewModel() { fun event(event: MyCommentsListEvent) = viewModelScope.launch { _eventFlow.emit(event) } sealed class MyCommentsListEvent -} \ No newline at end of file +} diff --git a/feature/etc/src/main/java/com/android/mediproject/feature/etc/EtcFragment.kt b/feature/etc/src/main/java/com/android/mediproject/feature/etc/EtcFragment.kt index 314da1da5..a3f8b2e84 100644 --- a/feature/etc/src/main/java/com/android/mediproject/feature/etc/EtcFragment.kt +++ b/feature/etc/src/main/java/com/android/mediproject/feature/etc/EtcFragment.kt @@ -1,6 +1,5 @@ package com.android.mediproject.feature.etc -import android.content.Context import android.content.Intent import android.net.Uri import android.os.Bundle @@ -11,7 +10,7 @@ import com.android.mediproject.core.common.uiutil.SystemBarStyler import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.etc.databinding.FragmentEtcBinding import dagger.hilt.android.AndroidEntryPoint -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted import javax.inject.Inject @AndroidEntryPoint @@ -50,7 +49,7 @@ class EtcFragment : private fun openWebWithUri(uri: Uri) { val intent = Intent(Intent.ACTION_VIEW) - intent.setData(uri) + intent.data = uri startActivity(intent) } } diff --git a/feature/etc/src/main/java/com/android/mediproject/feature/etc/EtcViewModel.kt b/feature/etc/src/main/java/com/android/mediproject/feature/etc/EtcViewModel.kt index 97b11e430..7f7bd27f1 100644 --- a/feature/etc/src/main/java/com/android/mediproject/feature/etc/EtcViewModel.kt +++ b/feature/etc/src/main/java/com/android/mediproject/feature/etc/EtcViewModel.kt @@ -1,8 +1,8 @@ package com.android.mediproject.feature.etc -import MutableEventFlow +import com.android.mediproject.core.common.viewmodel.MutableEventFlow import androidx.lifecycle.viewModelScope -import asEventFlow +import com.android.mediproject.core.common.viewmodel.asEventFlow import com.android.mediproject.core.ui.base.BaseViewModel import kotlinx.coroutines.launch @@ -25,4 +25,4 @@ class EtcViewModel : BaseViewModel() { object Privacy : EtcEvent() object Communicate : EtcEvent() } -} \ No newline at end of file +} diff --git a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/FavoriteMedicineFragment.kt b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/FavoriteMedicineFragment.kt index 59fae8e6d..f0e891af8 100644 --- a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/FavoriteMedicineFragment.kt +++ b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/FavoriteMedicineFragment.kt @@ -9,6 +9,7 @@ import android.view.View import android.view.ViewGroup import androidx.core.content.ContextCompat import androidx.fragment.app.viewModels +import com.android.mediproject.core.common.viewmodel.repeatOnStarted import com.android.mediproject.core.model.favoritemedicine.FavoriteMedicineDto import com.android.mediproject.core.model.remote.token.CurrentTokens import com.android.mediproject.core.model.remote.token.TokenState @@ -18,7 +19,6 @@ import com.android.mediproject.core.ui.base.view.ButtonChip import com.android.mediproject.feature.favoritemedicine.databinding.FragmentFavoriteMedicineBinding import com.google.android.flexbox.FlexboxLayout import dagger.hilt.android.AndroidEntryPoint -import repeatOnStarted @AndroidEntryPoint class FavoriteMedicineFragment : @@ -76,7 +76,7 @@ class FavoriteMedicineFragment : private fun clearFavoriteMedicineListView() = binding.favoriteMedicineList.removeAllViews() private fun checkMedicineListSize(medicineList: List): Boolean { - return (medicineList.size != 0) + return (medicineList.isNotEmpty()) } private fun showFavorteMedicine(medicineList: List) { diff --git a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/FavoriteMedicineViewModel.kt b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/FavoriteMedicineViewModel.kt index 1d1949689..a42fd2df1 100644 --- a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/FavoriteMedicineViewModel.kt +++ b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/FavoriteMedicineViewModel.kt @@ -1,8 +1,8 @@ package com.android.mediproject.feature.favoritemedicine -import MutableEventFlow +import com.android.mediproject.core.common.viewmodel.MutableEventFlow import androidx.lifecycle.viewModelScope -import asEventFlow +import com.android.mediproject.core.common.viewmodel.asEventFlow import com.android.mediproject.core.domain.GetFavoriteMedicineUseCase import com.android.mediproject.core.domain.GetTokenUseCase import com.android.mediproject.core.model.favoritemedicine.FavoriteMedicineDto @@ -43,7 +43,7 @@ class FavoriteMedicineViewModel @Inject constructor( fun loadFavoriteMedicines() = viewModelScope.launch { getFavoriteMedicineUseCase.getFavoriteMedicineList() - .collect { + .collect { it -> it.fold( onSuccess = { _favoriteMedicineList.value = it }, onFailure = { }, diff --git a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMedicineMoreFragment.kt b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMedicineMoreFragment.kt index f52626b52..49d9e8fb4 100644 --- a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMedicineMoreFragment.kt +++ b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMedicineMoreFragment.kt @@ -14,7 +14,7 @@ import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.favoritemedicine.databinding.FragmentFavoriteMedicineMoreBinding import com.android.mediproject.feature.favoritemedicine.favoritemedicinemore.recyclerview.FavoriteMedcineMoreDecoration import dagger.hilt.android.AndroidEntryPoint -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted import javax.inject.Inject @AndroidEntryPoint @@ -28,10 +28,6 @@ class FavoriteMedicineMoreFragment : @Inject lateinit var systemBarStyler: SystemBarStyler - override fun onAttach(context: Context) { - super.onAttach(context) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setBinding() diff --git a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMedicineMoreViewModel.kt b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMedicineMoreViewModel.kt index 3fe20b421..5b529fba5 100644 --- a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMedicineMoreViewModel.kt +++ b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMedicineMoreViewModel.kt @@ -29,8 +29,8 @@ class FavoriteMedicineMoreViewModel @Inject constructor( fun loadFavoriteMedicines() = viewModelScope.launch { getFavoriteMedicineUseCase.getFavoriteMedicineMoreList() - .collect { - it.fold( + .collect { result -> + result.fold( onSuccess = { _favoriteMedicineList.value = it }, onFailure = { }, ) diff --git a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/recyclerview/FavoriteMeidicneMoreAdapter.kt b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMeidicneMoreAdapter.kt similarity index 100% rename from feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/recyclerview/FavoriteMeidicneMoreAdapter.kt rename to feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMeidicneMoreAdapter.kt diff --git a/feature/home/src/main/java/com/android/mediproject/feature/home/HomeFragment.kt b/feature/home/src/main/java/com/android/mediproject/feature/home/HomeFragment.kt index 2c990e20c..d87176c07 100644 --- a/feature/home/src/main/java/com/android/mediproject/feature/home/HomeFragment.kt +++ b/feature/home/src/main/java/com/android/mediproject/feature/home/HomeFragment.kt @@ -14,7 +14,7 @@ import com.android.mediproject.feature.home.databinding.FragmentHomeBinding import com.android.mediproject.feature.news.penalties.recentpenaltylist.RecentPenaltyListFragment import com.android.mediproject.feature.search.recentsearchlist.RecentSearchListFragment import dagger.hilt.android.AndroidEntryPoint -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted import javax.inject.Inject @AndroidEntryPoint diff --git a/feature/home/src/main/java/com/android/mediproject/feature/home/HomeViewModel.kt b/feature/home/src/main/java/com/android/mediproject/feature/home/HomeViewModel.kt index 9121b9810..7c8f66bdb 100644 --- a/feature/home/src/main/java/com/android/mediproject/feature/home/HomeViewModel.kt +++ b/feature/home/src/main/java/com/android/mediproject/feature/home/HomeViewModel.kt @@ -1,8 +1,8 @@ package com.android.mediproject.feature.home -import MutableEventFlow +import com.android.mediproject.core.common.viewmodel.MutableEventFlow import androidx.lifecycle.viewModelScope -import asEventFlow +import com.android.mediproject.core.common.viewmodel.asEventFlow import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch diff --git a/feature/intro/src/main/java/com/android/mediproject/feature/intro/IntroFragment.kt b/feature/intro/src/main/java/com/android/mediproject/feature/intro/IntroFragment.kt index 998c66d47..61c2f5776 100644 --- a/feature/intro/src/main/java/com/android/mediproject/feature/intro/IntroFragment.kt +++ b/feature/intro/src/main/java/com/android/mediproject/feature/intro/IntroFragment.kt @@ -7,7 +7,7 @@ import androidx.navigation.NavOptions import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.intro.databinding.FragmentIntroBinding import dagger.hilt.android.AndroidEntryPoint -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted @AndroidEntryPoint class IntroFragment : BaseFragment(FragmentIntroBinding::inflate) { diff --git a/feature/intro/src/main/java/com/android/mediproject/feature/intro/IntroViewModel.kt b/feature/intro/src/main/java/com/android/mediproject/feature/intro/IntroViewModel.kt index 8985dbdc5..2ed8e0213 100644 --- a/feature/intro/src/main/java/com/android/mediproject/feature/intro/IntroViewModel.kt +++ b/feature/intro/src/main/java/com/android/mediproject/feature/intro/IntroViewModel.kt @@ -1,8 +1,8 @@ package com.android.mediproject.feature.intro -import MutableEventFlow +import com.android.mediproject.core.common.viewmodel.MutableEventFlow import androidx.lifecycle.viewModelScope -import asEventFlow +import com.android.mediproject.core.common.viewmodel.asEventFlow import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers import com.android.mediproject.core.domain.GetSkippableIntroUseCase diff --git a/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginFragment.kt b/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginFragment.kt index f86dab8dd..03acb37e2 100644 --- a/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginFragment.kt +++ b/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginFragment.kt @@ -28,7 +28,7 @@ import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.plus -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted import javax.inject.Inject @AndroidEntryPoint diff --git a/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginViewModel.kt b/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginViewModel.kt index 70d9fe008..0f4341010 100644 --- a/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginViewModel.kt +++ b/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginViewModel.kt @@ -1,13 +1,13 @@ package com.android.mediproject.feature.intro -import MutableEventFlow import android.text.Editable import androidx.lifecycle.viewModelScope -import asEventFlow import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers import com.android.mediproject.core.common.util.isEmailValid import com.android.mediproject.core.common.util.isPasswordValid +import com.android.mediproject.core.common.viewmodel.MutableEventFlow +import com.android.mediproject.core.common.viewmodel.asEventFlow import com.android.mediproject.core.domain.sign.SignUseCase import com.android.mediproject.core.model.local.navargs.TOHOME import com.android.mediproject.core.model.requestparameters.LoginParameter @@ -139,14 +139,14 @@ class LoginViewModel @Inject constructor( } private fun loginFailed() { - setLoginState(LoginViewModel.LoginState.LoginFailed("로그인 실패")) + setLoginState(LoginState.LoginFailed("로그인 실패")) } private fun loginSuccess() { - setLoginState(LoginViewModel.LoginState.LoginSuccess) + setLoginState(LoginState.LoginSuccess) } private fun loginFailedWithRegexError() { - setLoginState(LoginViewModel.LoginState.RegexError) + setLoginState(LoginState.RegexError) } } diff --git a/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpFragment.kt b/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpFragment.kt index b1d3ca1a2..b0bf393b7 100644 --- a/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpFragment.kt +++ b/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpFragment.kt @@ -24,7 +24,7 @@ import kotlinx.coroutines.flow.debounce import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted import javax.inject.Inject @AndroidEntryPoint diff --git a/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpViewModel.kt b/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpViewModel.kt index 031161fd1..c0976c9e6 100644 --- a/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpViewModel.kt +++ b/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpViewModel.kt @@ -1,8 +1,8 @@ package com.android.mediproject.feature.intro -import MutableEventFlow +import com.android.mediproject.core.common.viewmodel.MutableEventFlow import androidx.lifecycle.viewModelScope -import asEventFlow +import com.android.mediproject.core.common.viewmodel.asEventFlow import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers import com.android.mediproject.core.common.util.isEmailValid diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/basicinfo/host/MedicineBasicInfoViewModel.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/basicinfo/host/MedicineBasicInfoViewModel.kt index 2ab286274..502a15df7 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/basicinfo/host/MedicineBasicInfoViewModel.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/basicinfo/host/MedicineBasicInfoViewModel.kt @@ -7,7 +7,7 @@ import com.android.mediproject.core.common.mapper.MedicineInfoMapper import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers import com.android.mediproject.core.common.viewmodel.UiState -import com.android.mediproject.core.model.medicine.medicinedetailinfo.MedicineDetailInfo +import com.android.mediproject.core.model.medicine.medicinedetailinfo.MedicineDetail import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineDispatcher @@ -30,11 +30,11 @@ class MedicineBasicInfoViewModel @Inject constructor( ) : BaseViewModel() { - private val _medicineDetails = MutableStateFlow>(UiState.Loading) + private val _medicineDetails = MutableStateFlow>(UiState.Loading) private val medicineDetails get() = _medicineDetails.asStateFlow() - fun setMedicineDetails(uiState: UiState) { + fun setMedicineDetails(uiState: UiState) { viewModelScope.launch { _medicineDetails.value = uiState } diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/basicinfo/item/BaseMedicineInfoItemFragment.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/basicinfo/item/BaseMedicineInfoItemFragment.kt index 2f1639510..937257bc4 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/basicinfo/item/BaseMedicineInfoItemFragment.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/basicinfo/item/BaseMedicineInfoItemFragment.kt @@ -10,7 +10,7 @@ import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.medicine.basicinfo.host.MedicineBasicInfoViewModel import com.android.mediproject.feature.medicine.main.MedicineInfoViewModel import kotlinx.coroutines.flow.collectLatest -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted import kotlin.reflect.KClass import kotlin.reflect.full.createInstance @@ -25,18 +25,20 @@ abstract class BaseMedicineInfoItemFragment(inflate: Inflat override val fragmentViewModel: MedicineBasicInfoViewModel by viewModels(ownerProducer = { requireParentFragment() }) - private val _medicineInfoViewModel by viewModels(ownerProducer = { - requireParentFragment().requireParentFragment() - }) + private val _medicineInfoViewModel by viewModels( + ownerProducer = { + requireParentFragment().requireParentFragment() + }, + ) - protected val medicineInfoViewModel get() = _medicineInfoViewModel + private val medicineInfoViewModel get() = _medicineInfoViewModel companion object : MedicineInfoItemFragmentFactory { @JvmStatic override fun > newInstance( - fragmentClass: KClass + fragmentClass: KClass, ): T { return fragmentClass.createInstance() } @@ -53,4 +55,4 @@ abstract class BaseMedicineInfoItemFragment(inflate: Inflat } } -} \ No newline at end of file +} diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/basicinfo/item/DosageInfoItemFragment.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/basicinfo/item/DosageInfoItemFragment.kt index f28b71f06..30f5c7add 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/basicinfo/item/DosageInfoItemFragment.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/basicinfo/item/DosageInfoItemFragment.kt @@ -4,11 +4,11 @@ import android.os.Bundle import android.view.View import com.android.mediproject.feature.medicine.databinding.FragmentDosageInfoItemBinding import dagger.hilt.android.AndroidEntryPoint -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted @AndroidEntryPoint class DosageInfoItemFragment : BaseMedicineInfoItemFragment( - FragmentDosageInfoItemBinding::inflate + FragmentDosageInfoItemBinding::inflate, ) { companion object : MedicineInfoItemFragmentFactory by BaseMedicineInfoItemFragment.Companion @@ -24,4 +24,4 @@ class DosageInfoItemFragment : BaseMedicineInfoItemFragment( - FragmentEfficacyInfoItemBinding::inflate + FragmentEfficacyInfoItemBinding::inflate, ) { companion object : MedicineInfoItemFragmentFactory by BaseMedicineInfoItemFragment.Companion @@ -30,4 +30,4 @@ class EfficacyEffectItemFragment : BaseMedicineInfoItemFragment( - FragmentMedicineInfoItemBinding::inflate + FragmentMedicineInfoItemBinding::inflate, ) { companion object : MedicineInfoItemFragmentFactory by BaseMedicineInfoItemFragment.Companion @@ -24,4 +24,4 @@ class MedicineInfoItemFragment : BaseMedicineInfoItemFragment({ - requireParentFragment() - }) + private val medicineInfoViewModel by viewModels( + { + requireParentFragment() + }, + ) override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -37,7 +39,7 @@ class GranuleInfoFragment : BaseFragment { fragmentViewModel.getGranuleIdentificationInfo( - itemName = null, entpName = null, itemSeq = it.data.itemSequence, requireContext() + itemName = null, entpName = null, itemSeq = it.data.itemSequence, requireContext(), ) } @@ -49,4 +51,4 @@ class GranuleInfoFragment : BaseFragment> = medicinePrimaryInfo.flatMapLatest { primaryInfo -> + val medicineDetails: StateFlow> = medicinePrimaryInfo.flatMapLatest { primaryInfo -> getMedicineDetailsUseCase(primaryInfo).mapLatest { result -> result.fold( onSuccess = { diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicinePrecautionsItemFragment.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicinePrecautionsItemFragment.kt index 23cbf9c5a..a1c5f8f64 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicinePrecautionsItemFragment.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicinePrecautionsItemFragment.kt @@ -11,7 +11,7 @@ import com.android.mediproject.feature.medicine.precautions.host.MedicinePrecaut import com.android.mediproject.feature.medicine.precautions.item.precautions.PrecautionsListAdapter import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted /** * 의약품 사용 상 주의사항 Fragment @@ -45,4 +45,4 @@ class MedicinePrecautionsItemFragment : } -} \ No newline at end of file +} diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicineSafeUsageItemFragment.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicineSafeUsageItemFragment.kt index dc4f67742..6e9806424 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicineSafeUsageItemFragment.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicineSafeUsageItemFragment.kt @@ -5,13 +5,13 @@ import android.view.View import androidx.fragment.app.viewModels import com.android.mediproject.core.common.dialog.LoadingDialog import com.android.mediproject.core.common.viewmodel.UiState +import com.android.mediproject.core.common.viewmodel.repeatOnStarted import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.medicine.R import com.android.mediproject.feature.medicine.databinding.FragmentMedicineSafeUseItemBinding import com.android.mediproject.feature.medicine.main.MedicineInfoViewModel import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch -import repeatOnStarted /** * @@ -51,9 +51,11 @@ class MedicineSafeUsageItemFragment : override val fragmentViewModel: MedicineSafeUsageViewModel by viewModels() - private val medicineInfoViewModel by viewModels({ - requireParentFragment().requireParentFragment() - }) + private val medicineInfoViewModel by viewModels( + { + requireParentFragment().requireParentFragment() + }, + ) override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -94,4 +96,4 @@ class MedicineSafeUsageItemFragment : } -} \ No newline at end of file +} diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicineSafeUsageViewModel.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicineSafeUsageViewModel.kt index 5ba38d7dc..193a9b191 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicineSafeUsageViewModel.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicineSafeUsageViewModel.kt @@ -1,52 +1,35 @@ package com.android.mediproject.feature.medicine.precautions.item -import androidx.lifecycle.viewModelScope import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers import com.android.mediproject.core.common.viewmodel.UiState import com.android.mediproject.core.domain.GetDurUseCase -import com.android.mediproject.core.domain.GetElderlyCautionUseCase -import com.android.mediproject.core.model.datagokr.durproduct.productlist.DurItemDto -import com.android.mediproject.core.model.datagokr.durproduct.senior.ElderlyCautionDto import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow -import kotlinx.coroutines.flow.map -import kotlinx.coroutines.launch import javax.inject.Inject @HiltViewModel class MedicineSafeUsageViewModel @Inject constructor( - private val getElderlyCautionUseCase: GetElderlyCautionUseCase, private val getDurUseCase: GetDurUseCase, @Dispatcher(MediDispatchers.Default) private val defaultDispatcher: CoroutineDispatcher, ) : BaseViewModel() { - private val _elderlyCaution = MutableStateFlow(null) + private val _elderlyCaution = MutableStateFlow(null) val elderlyCaution get() = _elderlyCaution.asStateFlow() - private val _dur = MutableStateFlow>(UiState.Loading) + private val _dur = MutableStateFlow>(UiState.Loading) val dur get() = _dur.asStateFlow() fun loadDur( itemName: String?, itemSeq: String?, - ) = viewModelScope.launch { - getDurUseCase.invoke(itemName, itemSeq).map { result -> - result.fold( - onSuccess = { - _dur.value = UiState.Success(it) - }, - onFailure = { - _dur.value = UiState.Error(it.message ?: "failed") - }, - ) - } - } + ) { + } } diff --git a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageFragment.kt b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageFragment.kt index 2ec7cad75..0f1817400 100644 --- a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageFragment.kt +++ b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageFragment.kt @@ -19,7 +19,7 @@ import com.android.mediproject.feature.mypage.databinding.FragmentMyPageBinding import com.android.mediproject.feature.mypage.mypagemore.MyPageMoreBottomSheetFragment import com.android.mediproject.feature.mypage.mypagemore.MyPageMoreDialogFragment import dagger.hilt.android.AndroidEntryPoint -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted import javax.inject.Inject @AndroidEntryPoint @@ -104,7 +104,7 @@ class MyPageFragment : } private fun isCommentListNotEmpty(commentList: List): Boolean { - return (commentList.size != 0) + return (commentList.isNotEmpty()) } private fun handleToken(tokenState: TokenState) { diff --git a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageViewModel.kt b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageViewModel.kt index c182d55ce..f37bcbf1f 100644 --- a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageViewModel.kt +++ b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageViewModel.kt @@ -1,8 +1,8 @@ package com.android.mediproject.feature.mypage -import MutableEventFlow +import com.android.mediproject.core.common.viewmodel.MutableEventFlow import androidx.lifecycle.viewModelScope -import asEventFlow +import com.android.mediproject.core.common.viewmodel.asEventFlow import com.android.mediproject.core.domain.GetTokenUseCase import com.android.mediproject.core.domain.sign.SignUseCase import com.android.mediproject.core.domain.user.UserUseCase diff --git a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreBottomSheetFragment.kt b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreBottomSheetFragment.kt index 61423917b..e0d1e5e03 100644 --- a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreBottomSheetFragment.kt +++ b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreBottomSheetFragment.kt @@ -17,7 +17,7 @@ import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialogFragment import dagger.hilt.android.AndroidEntryPoint -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted @AndroidEntryPoint class MyPageMoreBottomSheetFragment(private val backCallback: () -> Unit) : diff --git a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreBottomSheetViewModel.kt b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreBottomSheetViewModel.kt index b57586283..cf6d8dec2 100644 --- a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreBottomSheetViewModel.kt +++ b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreBottomSheetViewModel.kt @@ -1,8 +1,8 @@ package com.android.mediproject.feature.mypage.mypagemore -import MutableEventFlow +import com.android.mediproject.core.common.viewmodel.MutableEventFlow import androidx.lifecycle.viewModelScope -import asEventFlow +import com.android.mediproject.core.common.viewmodel.asEventFlow import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow diff --git a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreDialogFragment.kt b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreDialogFragment.kt index 60bb1af7b..9ef39c26a 100644 --- a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreDialogFragment.kt +++ b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreDialogFragment.kt @@ -17,13 +17,12 @@ import androidx.core.os.bundleOf import androidx.fragment.app.DialogFragment import androidx.fragment.app.setFragmentResult import androidx.fragment.app.viewModels -import com.android.mediproject.core.ui.base.view.Subtitle import com.android.mediproject.core.ui.base.view.Subtitle.Companion.PASSWORD import com.android.mediproject.feature.mypage.R import com.android.mediproject.feature.mypage.databinding.FragmentMyPageMoreDialogBinding import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted @AndroidEntryPoint class MyPageMoreDialogFragment(private val flag: DialogFlag) : DialogFragment() { diff --git a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreDialogViewModel.kt b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreDialogViewModel.kt index 3dfd778a2..acc8da22a 100644 --- a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreDialogViewModel.kt +++ b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreDialogViewModel.kt @@ -1,9 +1,9 @@ package com.android.mediproject.feature.mypage.mypagemore -import MutableEventFlow +import com.android.mediproject.core.common.viewmodel.MutableEventFlow import android.text.Editable import androidx.lifecycle.viewModelScope -import asEventFlow +import com.android.mediproject.core.common.viewmodel.asEventFlow import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers import com.android.mediproject.core.common.util.isPasswordValid diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/NewsFragment.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/NewsFragment.kt index dbc7728b7..2e7e3e816 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/NewsFragment.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/NewsFragment.kt @@ -1,6 +1,5 @@ package com.android.mediproject.feature.news -import android.content.Context import android.os.Bundle import android.view.View import androidx.fragment.app.viewModels diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/adminaction/AdminActionScreen.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/adminaction/AdminActionScreen.kt index 7fbe84f0e..538bd8b9b 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/adminaction/AdminActionScreen.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/adminaction/AdminActionScreen.kt @@ -14,7 +14,6 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment.Companion.CenterVertically import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -38,14 +37,15 @@ import java.time.format.DateTimeFormatter */ @Composable fun AdminActionScreen( - viewModel: AdminActionViewModel = hiltViewModel(), navController: NavController + viewModel: AdminActionViewModel = hiltViewModel(), navController: NavController, ) { val list = viewModel.adminActionList.collectAsLazyPagingItems() LazyColumn(modifier = Modifier.fillMaxWidth()) { items( - count = list.itemCount, key = list.itemKey(), contentType = list.itemContentType( - ) + count = list.itemCount, key = list.itemKey(), + contentType = list.itemContentType( + ), ) { index -> list[index]?.let { it.onClick = { @@ -75,7 +75,6 @@ fun AdminActionScreen( /** * 행정 처분 목록 아이템 */ -@OptIn(ExperimentalMaterial3Api::class) @Composable fun ListItem(adminActionListItemDto: AdminActionListItemDto) { Surface( @@ -88,7 +87,7 @@ fun ListItem(adminActionListItemDto: AdminActionListItemDto) { }, ) { Column( - modifier = Modifier.fillMaxWidth() + modifier = Modifier.fillMaxWidth(), ) { Row( horizontalArrangement = Arrangement.spacedBy(8.dp), @@ -103,7 +102,7 @@ fun ListItem(adminActionListItemDto: AdminActionListItemDto) { .align(CenterVertically) .weight(1f), overflow = TextOverflow.Ellipsis, - maxLines = 1 + maxLines = 1, ) Text( text = adminActionListItemDto.lastSettleDate.format(dateFormat), @@ -115,14 +114,14 @@ fun ListItem(adminActionListItemDto: AdminActionListItemDto) { } Spacer(modifier = Modifier.height(8.dp)) Text( - text = adminActionListItemDto.violation, fontSize = 12.sp, color = Color.Gray, maxLines = 1 + text = adminActionListItemDto.violation, fontSize = 12.sp, color = Color.Gray, maxLines = 1, ) Spacer(modifier = Modifier.height(4.dp)) Text( - text = adminActionListItemDto.disposition, fontSize = 12.sp, color = Color.Gray, maxLines = 1 + text = adminActionListItemDto.disposition, fontSize = 12.sp, color = Color.Gray, maxLines = 1, ) } } } -private val dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd") \ No newline at end of file +private val dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd") diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/PenaltyListAdapter.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/PenaltyListAdapter.kt index 13b3f3120..b08ae7b80 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/PenaltyListAdapter.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/PenaltyListAdapter.kt @@ -4,25 +4,25 @@ import android.view.ViewGroup import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView -import com.android.mediproject.core.model.remote.recall.RecallSuspensionListItemDto +import com.android.mediproject.core.model.remote.recall.RecallSuspension import com.android.mediproject.core.ui.base.view.SimpleListItemView import com.android.mediproject.feature.news.R class PenaltyListAdapter : - ListAdapter( + ListAdapter( object : - DiffUtil.ItemCallback() { + DiffUtil.ItemCallback() { override fun areItemsTheSame( - oldItem: RecallSuspensionListItemDto, newItem: RecallSuspensionListItemDto, + oldItem: RecallSuspension, newItem: RecallSuspension, ): Boolean = oldItem == newItem override fun areContentsTheSame( - oldItem: RecallSuspensionListItemDto, newItem: RecallSuspensionListItemDto, + oldItem: RecallSuspension, newItem: RecallSuspension, ): Boolean = oldItem == newItem }, ) { - class PenaltyViewHolder(private val view: SimpleListItemView) : + class PenaltyViewHolder(private val view: SimpleListItemView) : RecyclerView.ViewHolder(view) { init { view.apply { @@ -37,7 +37,7 @@ class PenaltyListAdapter : } } - fun bind(data: RecallSuspensionListItemDto) { + fun bind(data: RecallSuspension) { view.apply { this.data = data setTitle(data.product) diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/RecentPenaltyListFragment.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/RecentPenaltyListFragment.kt index dc49b41bd..5e69071de 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/RecentPenaltyListFragment.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/RecentPenaltyListFragment.kt @@ -9,12 +9,12 @@ import com.android.mediproject.core.common.util.deepNavigate import com.android.mediproject.core.common.util.navigateByDeepLink import com.android.mediproject.core.common.viewmodel.UiState import com.android.mediproject.core.model.local.navargs.RecallDisposalArgs -import com.android.mediproject.core.model.remote.recall.RecallSuspensionListItemDto +import com.android.mediproject.core.model.remote.recall.RecallSuspension import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.core.ui.base.view.stateAsCollect import com.android.mediproject.feature.news.databinding.FragmentRecentPenaltyListBinding import dagger.hilt.android.AndroidEntryPoint -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted import javax.inject.Inject @AndroidEntryPoint @@ -59,7 +59,7 @@ class RecentPenaltyListFragment : } } - private fun handleUiState(uiState: UiState>) { + private fun handleUiState(uiState: UiState>) { when (uiState) { is UiState.Error -> {} is UiState.Initial -> {} diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/RecentPenaltyListViewModel.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/RecentPenaltyListViewModel.kt index 944308dad..c84767c55 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/RecentPenaltyListViewModel.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/RecentPenaltyListViewModel.kt @@ -1,11 +1,11 @@ package com.android.mediproject.feature.news.penalties.recentpenaltylist -import MutableEventFlow import androidx.lifecycle.viewModelScope -import asEventFlow +import com.android.mediproject.core.common.viewmodel.MutableEventFlow import com.android.mediproject.core.common.viewmodel.UiState +import com.android.mediproject.core.common.viewmodel.asEventFlow import com.android.mediproject.core.domain.GetRecallSuspensionInfoUseCase -import com.android.mediproject.core.model.remote.recall.RecallSuspensionListItemDto +import com.android.mediproject.core.model.remote.recall.RecallSuspension import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow @@ -15,15 +15,19 @@ import javax.inject.Inject @HiltViewModel class RecentPenaltyListViewModel @Inject constructor( - private val getRecallSuspensionInfoUseCase: GetRecallSuspensionInfoUseCase) : BaseViewModel() { + private val getRecallSuspensionInfoUseCase: GetRecallSuspensionInfoUseCase, +) : BaseViewModel() { init { viewModelScope.launch { - getRecallSuspensionInfoUseCase.getRecentRecallDisposalList(numOfRows = 5).fold(onSuccess = { - _recallDisposalList.value = UiState.Success(it) - }, onFailure = { - _recallDisposalList.value = UiState.Error(it.message ?: "failed") - }) + getRecallSuspensionInfoUseCase.getRecentRecallDisposalList(numOfRows = 5).fold( + onSuccess = { + _recallDisposalList.value = UiState.Success(it) + }, + onFailure = { + _recallDisposalList.value = UiState.Error(it.message ?: "failed") + }, + ) } } @@ -38,6 +42,6 @@ class RecentPenaltyListViewModel @Inject constructor( object NavigateToNews : PenaltyListEvent() } - private val _recallDisposalList = MutableStateFlow>>(UiState.Initial) + private val _recallDisposalList = MutableStateFlow>>(UiState.Initial) val recallDisposalList get() = _recallDisposalList.asStateFlow() } diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/DetailRecallSuspensionScreen.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/DetailRecallSuspensionScreen.kt index 9a4124ed6..7e6bc1552 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/DetailRecallSuspensionScreen.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/DetailRecallSuspensionScreen.kt @@ -23,7 +23,7 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.NavController import androidx.navigation.compose.rememberNavController import com.android.mediproject.core.common.viewmodel.UiState -import com.android.mediproject.core.model.remote.recall.DetailRecallSuspensionItemDto +import com.android.mediproject.core.model.remote.recall.DetailRecallSuspension import com.android.mediproject.core.ui.compose.CenterProgressIndicator import com.android.mediproject.feature.news.adminaction.color import java.time.format.DateTimeFormatter @@ -31,7 +31,8 @@ import java.time.format.DateTimeFormatter @Preview @Composable fun DetailRecallDisposalScreen( - viewModel: DetailRecallSuspensionViewModel = hiltViewModel(), navController: NavController = rememberNavController()) { + viewModel: DetailRecallSuspensionViewModel = hiltViewModel(), navController: NavController = rememberNavController(), +) { val uiState = viewModel.detailRecallSuspension.collectAsState() @@ -55,7 +56,7 @@ fun DetailRecallDisposalScreen( // 회수 폐기 @Composable -fun Item(item: DetailRecallSuspensionItemDto) { +fun Item(item: DetailRecallSuspension) { Surface( modifier = Modifier .fillMaxWidth() @@ -72,27 +73,33 @@ fun Item(item: DetailRecallSuspensionItemDto) { ) Spacer(Modifier.height(20.dp)) - Text(text = item.enterprise, + Text( + text = item.enterprise, modifier = Modifier.align(Alignment.End), fontSize = TextUnit(16f, type = TextUnitType.Sp), style = TextStyle(color = "#32649F".color), - textAlign = TextAlign.Right) + textAlign = TextAlign.Right, + ) Spacer(Modifier.height(20.dp)) - Text(text = item.recallCommandDate.format(DateTimeFormatter.ISO_DATE), + Text( + text = item.recallCommandDate.format(DateTimeFormatter.ISO_DATE), fontSize = TextUnit(14f, type = TextUnitType.Sp), style = TextStyle(color = "#595959".color), modifier = Modifier.align(Alignment.End), - textAlign = TextAlign.Right) + textAlign = TextAlign.Right, + ) Divider(Modifier.padding(top = 20.dp, bottom = 40.dp)) - Text(text = item.reasonForRecall, + Text( + text = item.reasonForRecall, fontSize = TextUnit(14f, type = TextUnitType.Sp), modifier = Modifier.padding(bottom = 8.dp), - color = "#3E3C3C".color) + color = "#3E3C3C".color, + ) } } } -} \ No newline at end of file +} diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/DetailRecallSuspensionViewModel.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/DetailRecallSuspensionViewModel.kt index 07e9e7a54..ec074daa9 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/DetailRecallSuspensionViewModel.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/DetailRecallSuspensionViewModel.kt @@ -6,7 +6,7 @@ import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers import com.android.mediproject.core.common.viewmodel.UiState import com.android.mediproject.core.domain.GetRecallSuspensionInfoUseCase -import com.android.mediproject.core.model.remote.recall.DetailRecallSuspensionItemDto +import com.android.mediproject.core.model.remote.recall.DetailRecallSuspension import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineDispatcher @@ -20,10 +20,10 @@ import javax.inject.Inject class DetailRecallSuspensionViewModel @Inject constructor( private val getRecallSuspensionInfoUseCase: GetRecallSuspensionInfoUseCase, private val savedStateHandle: SavedStateHandle, - @Dispatcher(MediDispatchers.IO) private val ioDispatcher: CoroutineDispatcher + @Dispatcher(MediDispatchers.IO) private val ioDispatcher: CoroutineDispatcher, ) : BaseViewModel() { - private val _detailRecallSuspension = MutableStateFlow>(UiState.Loading) + private val _detailRecallSuspension = MutableStateFlow>(UiState.Loading) val detailRecallSuspension get() = _detailRecallSuspension.asStateFlow() /** @@ -33,14 +33,17 @@ class DetailRecallSuspensionViewModel @Inject constructor( viewModelScope.launch(ioDispatcher) { val productName: String = checkNotNull(savedStateHandle["product"]) getRecallSuspensionInfoUseCase.getDetailRecallSuspension(product = productName, company = null).collectLatest { - _detailRecallSuspension.value = it.fold(onSuccess = { item -> - UiState.Success(item) - }, onFailure = { throwable -> - UiState.Error(throwable.message ?: "Failed to get detail recall suspension info") - }) + _detailRecallSuspension.value = it.fold( + onSuccess = { item -> + UiState.Success(item) + }, + onFailure = { throwable -> + UiState.Error(throwable.message ?: "Failed to get detail recall suspension info") + }, + ) } } } -} \ No newline at end of file +} diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/RecallSuspensionScreen.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/RecallSuspensionScreen.kt index d53de61de..d9af50a61 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/RecallSuspensionScreen.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/RecallSuspensionScreen.kt @@ -29,7 +29,7 @@ import androidx.paging.LoadState import androidx.paging.compose.collectAsLazyPagingItems import androidx.paging.compose.itemContentType import androidx.paging.compose.itemKey -import com.android.mediproject.core.model.remote.recall.RecallSuspensionListItemDto +import com.android.mediproject.core.model.remote.recall.RecallSuspension import com.android.mediproject.core.ui.compose.CenterProgressIndicator import java.time.format.DateTimeFormatter @@ -45,7 +45,9 @@ fun RecallDisposalScreen( val list = viewModel.recallDisposalList.collectAsLazyPagingItems() LazyColumn( - modifier = Modifier.fillMaxWidth().fillMaxHeight(), + modifier = Modifier + .fillMaxWidth() + .fillMaxHeight(), ) { items( count = list.itemCount, key = list.itemKey(), @@ -80,16 +82,17 @@ fun RecallDisposalScreen( /** * 회수 폐기 목록 아이템 * - * @param recallSuspensionListItemDto 회수 폐기 목록 아이템 + * @param recallSuspension 회수 폐기 목록 아이템 */ -@OptIn(ExperimentalMaterial3Api::class) @Composable -fun ListItem(recallSuspensionListItemDto: RecallSuspensionListItemDto) { +fun ListItem(recallSuspension: RecallSuspension) { Surface( - modifier = Modifier.fillMaxWidth().padding(horizontal = 24.dp, vertical = 20.dp), + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 24.dp, vertical = 20.dp), shape = RectangleShape, onClick = { - recallSuspensionListItemDto.onClick?.invoke(recallSuspensionListItemDto) + recallSuspension.onClick?.invoke(recallSuspension) }, ) { Column( @@ -100,16 +103,18 @@ fun ListItem(recallSuspensionListItemDto: RecallSuspensionListItemDto) { verticalAlignment = CenterVertically, ) { Text( - text = recallSuspensionListItemDto.product, + text = recallSuspension.product, style = MaterialTheme.typography.titleMedium, fontSize = 14.sp, color = Color.Black, - modifier = Modifier.align(CenterVertically).weight(1f), + modifier = Modifier + .align(CenterVertically) + .weight(1f), overflow = TextOverflow.Ellipsis, maxLines = 1, ) Text( - text = recallSuspensionListItemDto.run { + text = recallSuspension.run { if (recallCommandDate != null) recallCommandDate else destructionOrderDate }!!.format(dateFormat), @@ -121,7 +126,7 @@ fun ListItem(recallSuspensionListItemDto: RecallSuspensionListItemDto) { } Spacer(modifier = Modifier.height(8.dp)) Text( - text = recallSuspensionListItemDto.reason, fontSize = 12.sp, color = Color.Gray, maxLines = 1, + text = recallSuspension.reason, fontSize = 12.sp, color = Color.Gray, maxLines = 1, ) } } diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/RecallSuspensionViewModel.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/RecallSuspensionViewModel.kt index 3dfbcf208..a1cf7e58d 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/RecallSuspensionViewModel.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/RecallSuspensionViewModel.kt @@ -6,7 +6,7 @@ import androidx.paging.cachedIn import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers import com.android.mediproject.core.domain.GetRecallSuspensionInfoUseCase -import com.android.mediproject.core.model.remote.recall.RecallSuspensionListItemDto +import com.android.mediproject.core.model.remote.recall.RecallSuspension import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineDispatcher @@ -18,10 +18,10 @@ import javax.inject.Inject @HiltViewModel class RecallSuspensionViewModel @Inject constructor( private val getRecallSuspensionInfoUseCase: GetRecallSuspensionInfoUseCase, - @Dispatcher(MediDispatchers.IO) private val ioDispatcher: CoroutineDispatcher + @Dispatcher(MediDispatchers.IO) private val ioDispatcher: CoroutineDispatcher, ) : BaseViewModel() { - private lateinit var _recallDisposalList: Flow> + private lateinit var _recallDisposalList: Flow> val recallDisposalList by lazy { _recallDisposalList } /** @@ -34,4 +34,4 @@ class RecallSuspensionViewModel @Inject constructor( } -} \ No newline at end of file +} diff --git a/feature/search/src/main/java/com/android/mediproject/feature/search/SearchMedicinesFragment.kt b/feature/search/src/main/java/com/android/mediproject/feature/search/SearchMedicinesFragment.kt index 716e8abaa..56d1e87c5 100644 --- a/feature/search/src/main/java/com/android/mediproject/feature/search/SearchMedicinesFragment.kt +++ b/feature/search/src/main/java/com/android/mediproject/feature/search/SearchMedicinesFragment.kt @@ -19,7 +19,7 @@ import com.android.mediproject.feature.search.recentsearchlist.RecentSearchListF import com.android.mediproject.feature.search.recentsearchlist.RecentSearchListFragmentDirections import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.flow.collectLatest -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted import javax.inject.Inject @AndroidEntryPoint diff --git a/feature/search/src/main/java/com/android/mediproject/feature/search/recentsearchlist/RecentSearchListFragment.kt b/feature/search/src/main/java/com/android/mediproject/feature/search/recentsearchlist/RecentSearchListFragment.kt index 5a2a10efd..44da73492 100644 --- a/feature/search/src/main/java/com/android/mediproject/feature/search/recentsearchlist/RecentSearchListFragment.kt +++ b/feature/search/src/main/java/com/android/mediproject/feature/search/recentsearchlist/RecentSearchListFragment.kt @@ -15,7 +15,7 @@ import com.android.mediproject.feature.search.databinding.FragmentRecentSearchLi import com.google.android.flexbox.FlexboxLayout import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.flow.collectLatest -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted /** @@ -67,16 +67,18 @@ class RecentSearchListFragment : private fun addHistoryItemChips(searchHistoryItemDto: SearchHistoryItemDto) { binding.apply { val horizontalSpace = resources.getDimension(com.android.mediproject.core.ui.R.dimen.dp_4).toInt() - this.searchHistoryList.addView(ButtonChip(requireContext()).apply { - layoutParams = FlexboxLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT).apply { - setMargins(horizontalSpace, 0, horizontalSpace, 0) - } - data = searchHistoryItemDto.query - setChipText(data.toString()) - setOnChipClickListener { - onClicked(searchHistoryItemDto.query) - } - }) + this.searchHistoryList.addView( + ButtonChip(requireContext()).apply { + layoutParams = FlexboxLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT).apply { + setMargins(horizontalSpace, 0, horizontalSpace, 0) + } + data = searchHistoryItemDto.query + setChipText(data.toString()) + setOnChipClickListener { + onClicked(searchHistoryItemDto.query) + } + }, + ) } } @@ -96,4 +98,4 @@ class RecentSearchListFragment : binding.headerView.setOnMoreClickListener {} } -} \ No newline at end of file +} diff --git a/feature/search/src/main/java/com/android/mediproject/feature/search/result/ai/AiResultAdapter.kt b/feature/search/src/main/java/com/android/mediproject/feature/search/result/ai/AiResultAdapter.kt index 8111bd329..d052e9991 100644 --- a/feature/search/src/main/java/com/android/mediproject/feature/search/result/ai/AiResultAdapter.kt +++ b/feature/search/src/main/java/com/android/mediproject/feature/search/result/ai/AiResultAdapter.kt @@ -15,7 +15,7 @@ class AiResultAdapter : ListAdapter { +) : BaseViewModel(), ISendEvent { - val _classificationResult = MutableStateFlow>(emptyList()) + private val _classificationResult = MutableStateFlow>(emptyList()) val classificationResult = _classificationResult.asStateFlow() @@ -49,7 +49,7 @@ class AiSearchResultViewModel @Inject constructor( response.fold( onSuccess = { medicineDetailInfoList -> medicineDetailInfoList.mapIndexed { index, medicineDetailInfo -> - classificationList[index].medicineDetailInfo = medicineDetailInfo + classificationList[index].medicineDetail = medicineDetailInfo classificationList[index].onClick = ::send }.let { flowOf(UiState.Success(classificationList)) @@ -68,20 +68,20 @@ class AiSearchResultViewModel @Inject constructor( } } - override fun send(e: MedicineDetailInfo) { + override fun send(e: MedicineDetail) { viewModelScope.launch(defaultDispatcher) { _eventState.emit( EventState.OpenMedicineInfo( MedicineInfoArgs( entpKorName = e.entpName, - entpEngName = e.entpEnglishName ?: "", + entpEngName = e.entpEnglishName, itemIngrName = e.mainItemIngredient, itemKorName = e.itemName, itemEngName = e.itemEnglishName, itemSeq = e.itemSequence.toLong(), - productType = e.industryType ?: "", + productType = e.industryType, medicineType = e.etcOtcCode, - imgUrl = e.insertFileUrl ?: "", + imgUrl = e.insertFileUrl, ), ), ) diff --git a/feature/search/src/main/java/com/android/mediproject/feature/search/result/manual/ApprovedMedicinesAdapter.kt b/feature/search/src/main/java/com/android/mediproject/feature/search/result/manual/ApprovedMedicinesAdapter.kt index cbd17349b..83959d79e 100644 --- a/feature/search/src/main/java/com/android/mediproject/feature/search/result/manual/ApprovedMedicinesAdapter.kt +++ b/feature/search/src/main/java/com/android/mediproject/feature/search/result/manual/ApprovedMedicinesAdapter.kt @@ -6,10 +6,10 @@ import androidx.paging.PagingDataAdapter import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import com.android.mediproject.core.common.bindingadapter.GlideApp -import com.android.mediproject.core.model.medicine.medicineapproval.ApprovedMedicineItemDto +import com.android.mediproject.core.model.medicine.medicineapproval.ApprovedMedicine import com.android.mediproject.feature.search.databinding.ManualMedicineItemBinding -class ApprovedMedicinesAdapter : PagingDataAdapter(MedicineComparator) { +class ApprovedMedicinesAdapter : PagingDataAdapter(MedicineComparator) { class ViewHolder(val binding: ManualMedicineItemBinding) : RecyclerView.ViewHolder(binding.root) { @@ -21,7 +21,7 @@ class ApprovedMedicinesAdapter : PagingDataAdapter() { +object MedicineComparator : DiffUtil.ItemCallback() { override fun areItemsTheSame( - oldItem: ApprovedMedicineItemDto, newItem: ApprovedMedicineItemDto + oldItem: ApprovedMedicine, newItem: ApprovedMedicine, ): Boolean { return oldItem.itemSeq == newItem.itemSeq } override fun areContentsTheSame( - oldItem: ApprovedMedicineItemDto, newItem: ApprovedMedicineItemDto + oldItem: ApprovedMedicine, newItem: ApprovedMedicine, ): Boolean { return oldItem == newItem } -} \ No newline at end of file +} diff --git a/feature/search/src/main/java/com/android/mediproject/feature/search/result/manual/ManualSearchResultFragment.kt b/feature/search/src/main/java/com/android/mediproject/feature/search/result/manual/ManualSearchResultFragment.kt index 218740265..d17e1cde2 100644 --- a/feature/search/src/main/java/com/android/mediproject/feature/search/result/manual/ManualSearchResultFragment.kt +++ b/feature/search/src/main/java/com/android/mediproject/feature/search/result/manual/ManualSearchResultFragment.kt @@ -20,7 +20,7 @@ import com.android.mediproject.feature.search.result.EventState import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch -import repeatOnStarted +import com.android.mediproject.core.common.viewmodel.repeatOnStarted @AndroidEntryPoint class ManualSearchResultFragment : @@ -61,7 +61,7 @@ class ManualSearchResultFragment : adapter = searchResultListAdapter } - filterBtn.setOnClickListener { it -> + filterBtn.setOnClickListener { MediPopupMenu.showMenu(it, R.menu.search_result_list_filter_menu) { menuItem -> when (menuItem.itemId) { diff --git a/feature/search/src/main/java/com/android/mediproject/feature/search/result/manual/ManualSearchResultViewModel.kt b/feature/search/src/main/java/com/android/mediproject/feature/search/result/manual/ManualSearchResultViewModel.kt index 9c216bb83..4182292ff 100644 --- a/feature/search/src/main/java/com/android/mediproject/feature/search/result/manual/ManualSearchResultViewModel.kt +++ b/feature/search/src/main/java/com/android/mediproject/feature/search/result/manual/ManualSearchResultViewModel.kt @@ -1,17 +1,17 @@ package com.android.mediproject.feature.search.result.manual -import MutableEventFlow import androidx.lifecycle.viewModelScope import androidx.paging.cachedIn import androidx.paging.map -import asEventFlow import com.android.mediproject.core.common.bindingadapter.ISendEvent import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers +import com.android.mediproject.core.common.viewmodel.MutableEventFlow +import com.android.mediproject.core.common.viewmodel.asEventFlow import com.android.mediproject.core.domain.GetMedicineApprovalListUseCase import com.android.mediproject.core.model.constants.MedicationType import com.android.mediproject.core.model.local.navargs.MedicineInfoArgs -import com.android.mediproject.core.model.medicine.medicineapproval.ApprovedMedicineItemDto +import com.android.mediproject.core.model.medicine.medicineapproval.ApprovedMedicine import com.android.mediproject.core.model.requestparameters.ApprovalListSearchParameter import com.android.mediproject.core.ui.base.BaseViewModel import com.android.mediproject.feature.search.result.EventState @@ -37,7 +37,7 @@ class ManualSearchResultViewModel @Inject constructor( private val getMedicineApprovalListUseCase: GetMedicineApprovalListUseCase, @Dispatcher(MediDispatchers.IO) private val ioDispatcher: CoroutineDispatcher, @Dispatcher(MediDispatchers.Default) private val defaultDispatcher: CoroutineDispatcher, -) : BaseViewModel(), ISendEvent { +) : BaseViewModel(), ISendEvent { private val _searchParameter = MutableStateFlow(ApprovalListSearchParameter(itemName = null, entpName = null, medicationType = MedicationType.ALL)) @@ -91,7 +91,7 @@ class ManualSearchResultViewModel @Inject constructor( } } - override fun send(e: ApprovedMedicineItemDto) { + override fun send(e: ApprovedMedicine) { viewModelScope.launch(defaultDispatcher) { _eventState.emit( EventState.OpenMedicineInfo( diff --git a/feature/search/src/main/res/layout/ai_medicine_item.xml b/feature/search/src/main/res/layout/ai_medicine_item.xml index e3e80d770..dc69b808f 100644 --- a/feature/search/src/main/res/layout/ai_medicine_item.xml +++ b/feature/search/src/main/res/layout/ai_medicine_item.xml @@ -24,7 +24,7 @@ android:clickable="true" android:contentDescription="@string/medicineImage" android:scaleType="fitCenter" - app:img="@{item.medicineDetailInfo.insertFileUrl}" + app:img="@{item.medicineDetail.insertFileUrl}" app:layout_constraintBottom_toTopOf="@id/inferedImageView" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -75,7 +75,7 @@ android:layout_marginEnd="4dp" android:layout_marginBottom="4dp" android:ellipsize="end" - android:text="@{item.medicineDetailInfo.mainItemIngredient}" + android:text="@{item.medicineDetail.mainItemIngredient}" android:textColor="@android:color/darker_gray" android:textSize="12sp" android:textStyle="bold" @@ -89,7 +89,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="4dp" - android:text="@{item.medicineDetailInfo.itemEnglishName}" + android:text="@{item.medicineDetail.itemEnglishName}" android:textColor="@android:color/darker_gray" android:textSize="12sp" app:layout_constraintBottom_toTopOf="@+id/manufacturerTextView" @@ -100,7 +100,7 @@ android:id="@+id/manufacturerTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="@{item.medicineDetailInfo.entpName}" + android:text="@{item.medicineDetail.entpName}" android:textColor="@android:color/darker_gray" android:textSize="12sp" app:layout_constraintBottom_toBottomOf="parent" @@ -113,7 +113,7 @@ android:layout_height="wrap_content" android:background="@drawable/medicine_type_background" android:maxLines="1" - android:text="@{item.medicineDetailInfo.etcOtcCode}" + android:text="@{item.medicineDetail.etcOtcCode}" android:textColor="@color/medicineType" android:textSize="11sp" app:layout_constraintLeft_toRightOf="@id/medicineNameTextView" diff --git a/feature/search/src/main/res/layout/fragment_ai_search_result.xml b/feature/search/src/main/res/layout/fragment_ai_search_result.xml index 210d2c4d0..da660c014 100644 --- a/feature/search/src/main/res/layout/fragment_ai_search_result.xml +++ b/feature/search/src/main/res/layout/fragment_ai_search_result.xml @@ -19,7 +19,7 @@ android:layout_width="wrap_content" android:layout_height="24dp" android:layout_marginTop="24dp" - android:contentDescription="@string/appLogo" + android:contentDescription="@string/app_name" android:src="@drawable/medilenz_original_logo" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -58,4 +58,4 @@ app:layout_constraintTop_toBottomOf="@id/detectionedCountsTextView" /> - \ No newline at end of file + diff --git a/feature/search/src/main/res/layout/manual_medicine_item.xml b/feature/search/src/main/res/layout/manual_medicine_item.xml index 894b9d8a8..e85807f3a 100644 --- a/feature/search/src/main/res/layout/manual_medicine_item.xml +++ b/feature/search/src/main/res/layout/manual_medicine_item.xml @@ -6,7 +6,7 @@ + type="com.android.mediproject.core.model.medicine.medicineapproval.ApprovedMedicine" /> - \ No newline at end of file + From 759f4c48cf5bcd3d63cf21016442c1888e88cb5c Mon Sep 17 00:00:00 2001 From: JSPark <48265129+pknujsp@users.noreply.github.com> Date: Wed, 26 Jul 2023 23:09:37 +0900 Subject: [PATCH 08/13] =?UTF-8?q?#194=20=ED=8C=A8=ED=82=A4=EC=A7=80/?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=A0=95=EB=A6=AC=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 7 +-- .../com/android/mediproject/MainActivity.kt | 17 +++--- core/common/build.gradle.kts | 6 +- .../common/bindingadapter/BindingAdapter.kt | 8 +-- .../core/common/di/CommonModule.kt | 6 +- .../core/common/dialog/ProgressIndicator.kt | 32 +++++----- .../core/common/mapper/MedicineInfoMapper.kt | 4 +- .../common/network/di/DispatchersModule.kt | 4 +- .../core/common/uiutil/DimensionUtil.kt | 20 ------- .../core/common/util/DimensionUtil.kt | 13 +++++ .../common/{uiutil => util}/EditableUtil.kt | 2 +- .../core/common/util/KeepFragmentNavigator.kt | 29 ---------- .../core/common/{uiutil => util}/Keyboard.kt | 2 +- .../SystemBarColorAnalyzer.kt | 6 +- .../{uiutil => util}/SystemBarStyler.kt | 2 +- .../core/common/util/UriBuilder.kt | 2 +- .../android/mediproject/core/common/values.kt | 6 +- .../core/common/viewmodel/UiState.kt | 32 ++++++++-- core/data/build.gradle.kts | 8 ++- .../data/{remote/di => }/RepositoryModule.kt | 46 +++++++-------- .../adminaction/AdminActionRepository.kt | 4 +- .../adminaction/AdminActionRepositoryImpl.kt | 4 +- .../comments/CommentsRepository.kt | 8 +-- .../comments/CommentsRepositoryImpl.kt | 14 ++--- .../durproduct/DurProductRepositoryImpl.kt | 2 +- .../FavoriteMedicineRepository.kt | 6 +- .../FavoriteMedicineRepositoryImpl.kt | 4 +- .../GranuleIdentificationRepository.kt | 4 +- .../GranuleIdentificationRepositoryImpl.kt | 21 ++++--- .../MedicineApprovalRepository.kt | 4 +- .../MedicineApprovalRepositoryImpl.kt | 4 +- .../medicineid/MedicineIdRepository.kt | 4 +- .../medicineid/MedicineIdRepositoryImpl.kt | 6 +- .../RecallSuspensionRepository.kt | 6 +- .../RecallSuspensionRepositoryImpl.kt | 6 +- .../core/data/remote/token/TokenRepository.kt | 9 --- .../data/search/SearchHistoryRepository.kt | 4 +- .../search/SearchHistoryRepositoryImpl.kt | 17 +++--- .../data/{remote => }/sign/SignRepository.kt | 2 +- .../{remote => }/sign/SignRepositoryImpl.kt | 4 +- .../core/data/token/TokenRepository.kt | 9 +++ .../{remote => }/token/TokenRepositoryImpl.kt | 6 +- .../{remote => }/user/UserInfoRepository.kt | 4 +- .../user/UserInfoRepositoryImpl.kt | 6 +- .../data/{remote => }/user/UserRepository.kt | 4 +- .../{remote => }/user/UserRepositoryImpl.kt | 2 +- .../mediproject/core/database/RoomDB.kt | 2 +- .../cache/join/MedicineCacheJoinResult.kt | 1 + .../searchhistory/SearchHistoryDao.kt | 2 +- .../searchhistory/SearchHistoryMapper.kt | 6 +- .../core/datastore/DataStoreModule.kt | 12 ++-- core/domain/build.gradle.kts | 9 ++- .../core/domain/CommentsUseCase.kt | 16 ++--- .../core/domain/GetAdminActionInfoUseCase.kt | 12 ++-- .../core/domain/GetFavoriteMedicineUseCase.kt | 10 ++-- .../domain/GetGranuleIdentificationUseCase.kt | 27 +++++---- .../domain/GetMedicineApprovalListUseCase.kt | 4 +- .../core/domain/GetMedicineDetailsUseCase.kt | 6 +- .../domain/GetRecallSuspensionInfoUseCase.kt | 8 +-- .../core/domain/GetSkippableIntroUseCase.kt | 4 +- .../core/domain/GetTokenUseCase.kt | 6 +- .../core/domain/SearchHistoryUseCase.kt | 8 +-- .../domain/sign/GetAccountStateUseCase.kt | 4 +- .../core/domain/sign/GetUserUseCase.kt | 10 ++-- .../core/domain/sign/SignUseCase.kt | 6 +- .../core/domain/user/UserUseCase.kt | 12 ++-- .../mediproject/core/model/DataState.kt | 26 +++++++-- .../mediproject/core/{ => model}/DateTime.kt | 2 +- .../AdminAction.kt} | 10 ++-- .../adminaction/AdminActionListResponse.kt | 6 +- .../comments/{CommentDto.kt => Comment.kt} | 10 ++-- .../model/comments/CommentChangedResponse.kt | 4 +- .../model/comments/CommentListResponse.kt | 14 ++--- .../{EditedCommentDto.kt => EditedComment.kt} | 4 +- .../core/model/comments/LikeResponse.kt | 4 +- .../{MyCommentDto.kt => MyComment.kt} | 4 +- .../{NewCommentDto.kt => NewComment.kt} | 4 +- .../core/model/{datagokr => dur}/DurType.kt | 2 +- .../DurIngrCapacityAttentionResponse.kt | 2 +- .../DurIngrCombinationTabooResponse.kt | 2 +- .../dosing/DurIngrDosingCautionResponse.kt | 2 +- ...DurIngrEfficacyGroupDuplicationResponse.kt | 2 +- .../DurIngrPregnantWomanTabooResponse.kt | 2 +- .../senior/DurIngrSeniorCautionResponse.kt | 2 +- .../DurIngrSpecialtyAgeGroupTabooResponse.kt | 2 +- .../DurProductCapacityAttentionResponse.kt | 2 +- .../DurProductCombinationTabooResponse.kt | 2 +- .../dosing/DurProductDosingCautionResponse.kt | 2 +- ...ProductEfficacyGroupDuplicationResponse.kt | 2 +- ...uctExReleaseTableSplitAttentionResponse.kt | 2 +- .../DurProductPregnantWomanTabooResponse.kt | 2 +- .../productlist/DurProductListResponse.kt | 2 +- .../senior/DurProductSeniorCautionResponse.kt | 2 +- ...urProductSpecialtyAgeGroupTabooResponse.kt | 2 +- .../favoritemedicine/FavoriteMedicine.kt | 10 ++++ .../favoritemedicine/FavoriteMedicineDto.kt | 10 ---- .../FavoriteMedicineListResponse.kt | 10 ++-- ...MoreDto.kt => FavoriteMedicineMoreInfo.kt} | 12 ++-- .../GranuleIdentificationInfo.kt} | 8 +-- .../GranuleIdentificationInfoResponse.kt | 2 +- .../model/local/navargs/RecallDisposalArgs.kt | 5 -- .../core/model/medicine/MedicineIdResponse.kt | 4 +- .../medicinedetailinfo/MedicineDetail.kt | 2 +- .../model/{local => }/navargs/BaseNavArgs.kt | 2 +- .../navargs/LoginFromMyPageArgs.kt | 2 +- .../navargs/MedicineBasicInfoArgs.kt | 4 +- .../{local => }/navargs/MedicineInfoArgs.kt | 2 +- .../core/model/navargs/RecallDisposalArgs.kt | 5 ++ .../recall/DetailRecallSuspension.kt | 2 +- .../recall/DetailRecallSuspensionResponse.kt | 2 +- .../{remote => }/recall/RecallSuspension.kt | 4 +- .../recall/RecallSuspensionListResponse.kt | 2 +- .../remote/token/ReissueTokenResponse.kt | 7 --- .../VertexAiPredictParameter.kt | 22 ------- .../core/model/search/SearchHistory.kt | 9 +++ .../search/local/SearchHistoryItemDto.kt | 9 --- .../model/searchmedicines/SearchQueryArgs.kt | 12 ++++ .../searchmedicines/local/SearchQueryArgs.kt | 12 ---- .../ServerQueryResponse.kt} | 6 +- .../ServerSignResponse.kt} | 6 +- .../model/{remote => }/sign/SignInResponse.kt | 6 +- .../model/{remote => }/sign/SignUpResponse.kt | 6 +- .../model/{remote => }/token/CurrentTokens.kt | 2 +- .../core/model/token/ReissueTokenResponse.kt | 7 +++ .../{remote => }/token/RequestBehavior.kt | 2 +- .../model/{remote => }/token/TokenState.kt | 2 +- .../core/model/user/{UserDto.kt => User.kt} | 6 +- .../core/model/user/local/UserDto.kt | 24 -------- .../user/remote/ChangeNicknameResponse.kt | 4 +- .../user/remote/ChangePasswordResponse.kt | 4 +- .../core/model/user/remote/UserResponse.kt | 8 +-- .../model/user/remote/WithdrawalResponse.kt | 4 +- core/network/build.gradle.kts | 8 ++- ...orkListener.kt => NetworkStatusManager.kt} | 15 ++--- .../datasource/dur/DurIngrDataSource.kt | 12 ++-- .../datasource/dur/DurIngrDataSourceImpl.kt | 14 ++--- .../datasource/dur/DurProductDataSource.kt | 18 +++--- .../dur/DurProductDataSourceImpl.kt | 18 +++--- .../GranuleIdentificationDataSource.kt | 4 +- .../GranuleIdentificationDataSourceImpl.kt | 2 +- .../image/GoogleSearchDataSourceImpl.kt | 7 ++- .../adminaction/AdminActionDataSource.kt | 4 +- .../AdminActionListDataSourceImpl.kt | 2 +- .../RecallSuspensionDataSource.kt | 6 +- .../RecallSuspensionDataSourceImpl.kt | 2 +- .../RecallSuspensionListDataSourceImpl.kt | 2 +- .../network/datasource/sign/SignDataSource.kt | 4 +- .../datasource/sign/SignDataSourceImpl.kt | 6 +- .../network/datasource/tokens/NewTokens.kt | 2 +- .../datasource/tokens/TokenDataSource.kt | 4 +- .../datasource/tokens/TokenDataSourceImpl.kt | 12 ++-- .../tokens/TokenResponseInterceptor.kt | 6 +- .../network/module/GoogleSearchNetwork.kt | 13 ++--- .../core/network/module/NetworkModule.kt | 3 +- .../{AwsNetwork.kt => ServerNetwork.kt} | 27 ++++----- .../module/datagokr/DataGoKrNetworkApi.kt | 16 ++--- .../module/datagokr/DurIngrInfoNetworkApi.kt | 28 ++++----- .../datagokr/DurProductInfoNetworkApi.kt | 58 +++++++++---------- .../network/tokens/TokenRequestInterceptor.kt | 2 +- .../core/network/tokens/TokenServer.kt | 4 +- .../core/network/tokens/TokenServerImpl.kt | 8 +-- core/ui/build.gradle.kts | 9 +-- .../core/ui/base/view/LoadStateView.kt | 12 ++-- feature/camera/build.gradle.kts | 9 ++- .../camera/MedicinesDetectorFragment.kt | 4 +- .../imagedialog/DetectedImageFragment.kt | 4 +- feature/comments/build.gradle.kts | 10 ++-- .../commentsofamedicine/CommentsAdapter.kt | 46 ++++++++------- .../MedicineCommentsFragment.kt | 2 +- .../MedicineCommentsViewModel.kt | 46 +++++++++------ .../mycommentslist/MyCommentsListAdapter.kt | 16 ++--- .../MyCommentsListDecoration.kt | 10 ++-- .../mycommentslist/MyCommentsListFragment.kt | 10 ++-- .../RecentCommentsAdapter.kt | 18 +++--- .../src/main/res/layout/item_my_comment.xml | 4 +- .../src/main/res/layout/item_view_comment.xml | 4 +- .../res/layout/item_view_comment_edit.xml | 4 +- feature/etc/build.gradle.kts | 9 +-- .../mediproject/feature/etc/EtcFragment.kt | 2 +- feature/favoritemedicine/build.gradle.kts | 9 +-- .../FavoriteMedicineFragment.kt | 12 ++-- .../FavoriteMedicineViewModel.kt | 8 +-- .../FavoriteMedicineMoreFragment.kt | 11 ++-- .../FavoriteMedicineMoreViewModel.kt | 8 +-- .../FavoriteMeidicneMoreAdapter.kt | 16 ++--- .../FavoriteMedcineMoreDecoration.kt | 10 ++-- .../res/layout/item_favorite_medicine.xml | 4 +- feature/home/build.gradle.kts | 7 ++- .../mediproject/feature/home/HomeFragment.kt | 2 +- feature/intro/build.gradle.kts | 9 +-- .../feature/intro/LoginFragment.kt | 8 +-- .../feature/intro/LoginViewModel.kt | 2 +- .../feature/intro/SignUpFragment.kt | 6 +- .../feature/intro/SignUpViewModel.kt | 2 +- feature/medicine/build.gradle.kts | 6 +- .../medicine/comments/HostCommentsFragment.kt | 2 +- .../medicine/granule/GranuleInfoViewModel.kt | 12 ++-- .../medicine/main/MedicineInfoFragment.kt | 8 +-- .../medicine/main/MedicineInfoViewModel.kt | 2 +- .../res/layout/fragment_medicine_info.xml | 2 +- feature/mypage/build.gradle.kts | 9 +-- .../feature/mypage/MyPageFragment.kt | 12 ++-- .../feature/mypage/MyPageMyCommentAdapter.kt | 14 ++--- .../mypage/MyPageMyCommentDecoraion.kt | 10 ++-- .../feature/mypage/MyPageViewModel.kt | 22 +++---- .../src/main/res/layout/fragment_my_page.xml | 2 +- .../main/res/layout/item_mypage_mycomment.xml | 4 +- feature/news/build.gradle.kts | 7 ++- .../mediproject/feature/news/NewsFragment.kt | 4 +- .../mediproject/feature/news/NewsScreen.kt | 4 +- .../news/adminaction/AdminActionScreen.kt | 15 +++-- .../news/adminaction/AdminActionViewModel.kt | 46 ++++++++------- .../adminaction/DetailAdminActionScreen.kt | 39 ++++++++----- .../recentpenaltylist/PenaltyListAdapter.kt | 2 +- .../RecentPenaltyListFragment.kt | 4 +- .../RecentPenaltyListViewModel.kt | 2 +- .../DetailRecallSuspensionScreen.kt | 2 +- .../DetailRecallSuspensionViewModel.kt | 2 +- .../RecallSuspensionScreen.kt | 2 +- .../RecallSuspensionViewModel.kt | 2 +- feature/search/build.gradle.kts | 7 ++- .../feature/search/SearchMedicinesFragment.kt | 8 +-- .../RecentSearchListFragment.kt | 8 +-- .../feature/search/result/OpenMedicineInfo.kt | 4 +- .../result/ai/AiSearchResultFragment.kt | 5 +- .../result/ai/AiSearchResultViewModel.kt | 2 +- .../manual/ManualSearchResultFragment.kt | 2 +- .../manual/ManualSearchResultViewModel.kt | 6 +- .../main/res/layout/manual_medicine_item.xml | 1 + 229 files changed, 936 insertions(+), 932 deletions(-) delete mode 100644 core/common/src/main/java/com/android/mediproject/core/common/uiutil/DimensionUtil.kt create mode 100644 core/common/src/main/java/com/android/mediproject/core/common/util/DimensionUtil.kt rename core/common/src/main/java/com/android/mediproject/core/common/{uiutil => util}/EditableUtil.kt (68%) rename core/common/src/main/java/com/android/mediproject/core/common/{uiutil => util}/Keyboard.kt (91%) rename core/common/src/main/java/com/android/mediproject/core/common/{uiutil => util}/SystemBarColorAnalyzer.kt (98%) rename core/common/src/main/java/com/android/mediproject/core/common/{uiutil => util}/SystemBarStyler.kt (98%) rename core/data/src/main/java/com/android/mediproject/core/data/{remote/di => }/RepositoryModule.kt (75%) rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/adminaction/AdminActionRepository.kt (57%) rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/adminaction/AdminActionRepositoryImpl.kt (84%) rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/comments/CommentsRepository.kt (88%) rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/comments/CommentsRepositoryImpl.kt (89%) rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/favoritemedicine/FavoriteMedicineRepository.kt (93%) rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/favoritemedicine/FavoriteMedicineRepositoryImpl.kt (96%) rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/granule/GranuleIdentificationRepository.kt (63%) rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/granule/GranuleIdentificationRepositoryImpl.kt (53%) rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/medicineapproval/MedicineApprovalRepository.kt (86%) rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/medicineapproval/MedicineApprovalRepositoryImpl.kt (94%) rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/medicineid/MedicineIdRepository.kt (84%) rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/medicineid/MedicineIdRepositoryImpl.kt (82%) rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/recallsuspension/RecallSuspensionRepository.kt (67%) rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/recallsuspension/RecallSuspensionRepositoryImpl.kt (88%) delete mode 100644 core/data/src/main/java/com/android/mediproject/core/data/remote/token/TokenRepository.kt rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/sign/SignRepository.kt (87%) rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/sign/SignRepositoryImpl.kt (95%) create mode 100644 core/data/src/main/java/com/android/mediproject/core/data/token/TokenRepository.kt rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/token/TokenRepositoryImpl.kt (90%) rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/user/UserInfoRepository.kt (88%) rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/user/UserInfoRepositoryImpl.kt (96%) rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/user/UserRepository.kt (93%) rename core/data/src/main/java/com/android/mediproject/core/data/{remote => }/user/UserRepositoryImpl.kt (97%) rename core/model/src/main/java/com/android/mediproject/core/{ => model}/DateTime.kt (89%) rename core/model/src/main/java/com/android/mediproject/core/model/{remote/adminaction/AdminActionListItemDto.kt => adminaction/AdminAction.kt} (91%) rename core/model/src/main/java/com/android/mediproject/core/model/{remote => }/adminaction/AdminActionListResponse.kt (92%) rename core/model/src/main/java/com/android/mediproject/core/model/comments/{CommentDto.kt => Comment.kt} (91%) rename core/model/src/main/java/com/android/mediproject/core/model/comments/{EditedCommentDto.kt => EditedComment.kt} (89%) rename core/model/src/main/java/com/android/mediproject/core/model/comments/{MyCommentDto.kt => MyComment.kt} (83%) rename core/model/src/main/java/com/android/mediproject/core/model/comments/{NewCommentDto.kt => NewComment.kt} (93%) rename core/model/src/main/java/com/android/mediproject/core/model/{datagokr => dur}/DurType.kt (88%) rename core/model/src/main/java/com/android/mediproject/core/model/{datagokr => dur}/duringr/capacity/DurIngrCapacityAttentionResponse.kt (97%) rename core/model/src/main/java/com/android/mediproject/core/model/{datagokr => dur}/duringr/combination/DurIngrCombinationTabooResponse.kt (97%) rename core/model/src/main/java/com/android/mediproject/core/model/{datagokr => dur}/duringr/dosing/DurIngrDosingCautionResponse.kt (97%) rename core/model/src/main/java/com/android/mediproject/core/model/{datagokr => dur}/duringr/efficacygroupduplication/DurIngrEfficacyGroupDuplicationResponse.kt (96%) rename core/model/src/main/java/com/android/mediproject/core/model/{datagokr => dur}/duringr/pregnancy/DurIngrPregnantWomanTabooResponse.kt (97%) rename core/model/src/main/java/com/android/mediproject/core/model/{datagokr => dur}/duringr/senior/DurIngrSeniorCautionResponse.kt (97%) rename core/model/src/main/java/com/android/mediproject/core/model/{datagokr => dur}/duringr/specialtyagegroup/DurIngrSpecialtyAgeGroupTabooResponse.kt (96%) rename core/model/src/main/java/com/android/mediproject/core/model/{datagokr => dur}/durproduct/capacity/DurProductCapacityAttentionResponse.kt (97%) rename core/model/src/main/java/com/android/mediproject/core/model/{datagokr => dur}/durproduct/combination/DurProductCombinationTabooResponse.kt (98%) rename core/model/src/main/java/com/android/mediproject/core/model/{datagokr => dur}/durproduct/dosing/DurProductDosingCautionResponse.kt (97%) rename core/model/src/main/java/com/android/mediproject/core/model/{datagokr => dur}/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplicationResponse.kt (97%) rename core/model/src/main/java/com/android/mediproject/core/model/{datagokr => dur}/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt (96%) rename core/model/src/main/java/com/android/mediproject/core/model/{datagokr => dur}/durproduct/pregnancy/DurProductPregnantWomanTabooResponse.kt (97%) rename core/model/src/main/java/com/android/mediproject/core/model/{datagokr => dur}/durproduct/productlist/DurProductListResponse.kt (97%) rename core/model/src/main/java/com/android/mediproject/core/model/{datagokr => dur}/durproduct/senior/DurProductSeniorCautionResponse.kt (97%) rename core/model/src/main/java/com/android/mediproject/core/model/{datagokr => dur}/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTabooResponse.kt (97%) create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/favoritemedicine/FavoriteMedicine.kt delete mode 100644 core/model/src/main/java/com/android/mediproject/core/model/favoritemedicine/FavoriteMedicineDto.kt rename core/model/src/main/java/com/android/mediproject/core/model/favoritemedicine/{FavoriteMedicineMoreDto.kt => FavoriteMedicineMoreInfo.kt} (70%) rename core/model/src/main/java/com/android/mediproject/core/model/{remote/granule/GranuleIdentificationInfoDto.kt => granule/GranuleIdentificationInfo.kt} (93%) rename core/model/src/main/java/com/android/mediproject/core/model/{remote => }/granule/GranuleIdentificationInfoResponse.kt (98%) delete mode 100644 core/model/src/main/java/com/android/mediproject/core/model/local/navargs/RecallDisposalArgs.kt rename core/model/src/main/java/com/android/mediproject/core/model/{local => }/navargs/BaseNavArgs.kt (99%) rename core/model/src/main/java/com/android/mediproject/core/model/{local => }/navargs/LoginFromMyPageArgs.kt (73%) rename core/model/src/main/java/com/android/mediproject/core/model/{local => }/navargs/MedicineBasicInfoArgs.kt (66%) rename core/model/src/main/java/com/android/mediproject/core/model/{local => }/navargs/MedicineInfoArgs.kt (95%) create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/navargs/RecallDisposalArgs.kt rename core/model/src/main/java/com/android/mediproject/core/model/{remote => }/recall/DetailRecallSuspension.kt (97%) rename core/model/src/main/java/com/android/mediproject/core/model/{remote => }/recall/DetailRecallSuspensionResponse.kt (97%) rename core/model/src/main/java/com/android/mediproject/core/model/{remote => }/recall/RecallSuspension.kt (92%) rename core/model/src/main/java/com/android/mediproject/core/model/{remote => }/recall/RecallSuspensionListResponse.kt (96%) delete mode 100644 core/model/src/main/java/com/android/mediproject/core/model/remote/token/ReissueTokenResponse.kt delete mode 100644 core/model/src/main/java/com/android/mediproject/core/model/requestparameters/VertexAiPredictParameter.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/search/SearchHistory.kt delete mode 100644 core/model/src/main/java/com/android/mediproject/core/model/search/local/SearchHistoryItemDto.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/searchmedicines/SearchQueryArgs.kt delete mode 100644 core/model/src/main/java/com/android/mediproject/core/model/searchmedicines/local/SearchQueryArgs.kt rename core/model/src/main/java/com/android/mediproject/core/model/{awscommon/BaseAwsQueryResponse.kt => servercommon/ServerQueryResponse.kt} (62%) rename core/model/src/main/java/com/android/mediproject/core/model/{awscommon/BaseAwsSignResponse.kt => servercommon/ServerSignResponse.kt} (80%) rename core/model/src/main/java/com/android/mediproject/core/model/{remote => }/sign/SignInResponse.kt (63%) rename core/model/src/main/java/com/android/mediproject/core/model/{remote => }/sign/SignUpResponse.kt (63%) rename core/model/src/main/java/com/android/mediproject/core/model/{remote => }/token/CurrentTokens.kt (92%) create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/token/ReissueTokenResponse.kt rename core/model/src/main/java/com/android/mediproject/core/model/{remote => }/token/RequestBehavior.kt (86%) rename core/model/src/main/java/com/android/mediproject/core/model/{remote => }/token/TokenState.kt (92%) rename core/model/src/main/java/com/android/mediproject/core/model/user/{UserDto.kt => User.kt} (68%) delete mode 100644 core/model/src/main/java/com/android/mediproject/core/model/user/local/UserDto.kt rename core/network/src/main/java/com/android/mediproject/core/network/{InternetNetworkListener.kt => NetworkStatusManager.kt} (76%) rename core/network/src/main/java/com/android/mediproject/core/network/module/{AwsNetwork.kt => ServerNetwork.kt} (89%) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 0088a48dc..181288abb 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -53,13 +53,12 @@ android { checkDependencies = true ignoreTestSources = true } + hilt { + enableAggregatingTask = true + } } -hilt { - enableAggregatingTask = true -} - dependencies { implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar")))) diff --git a/app/src/main/java/com/android/mediproject/MainActivity.kt b/app/src/main/java/com/android/mediproject/MainActivity.kt index cd73f8f1a..e1b7e6434 100644 --- a/app/src/main/java/com/android/mediproject/MainActivity.kt +++ b/app/src/main/java/com/android/mediproject/MainActivity.kt @@ -13,13 +13,12 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.navigation.NavController import androidx.navigation.fragment.NavHostFragment -import androidx.navigation.ui.NavigationUiSaveStateControl import androidx.navigation.ui.setupWithNavController -import com.android.mediproject.core.common.uiutil.LayoutController -import com.android.mediproject.core.common.uiutil.SystemBarColorAnalyzer -import com.android.mediproject.core.common.uiutil.SystemBarController -import com.android.mediproject.core.common.uiutil.SystemBarStyler -import com.android.mediproject.core.network.InternetNetworkListener +import com.android.mediproject.core.common.util.LayoutController +import com.android.mediproject.core.common.util.SystemBarColorAnalyzer +import com.android.mediproject.core.common.util.SystemBarController +import com.android.mediproject.core.common.util.SystemBarStyler +import com.android.mediproject.core.network.NetworkStatusManager import com.android.mediproject.core.ui.WindowViewModel import com.android.mediproject.core.ui.base.BaseActivity import com.android.mediproject.databinding.ActivityMainBinding @@ -34,7 +33,7 @@ class MainActivity : BaseActivity(ActivityMa @Inject lateinit var layoutController: LayoutController @Inject lateinit var systemBarController: SystemBarController - @Inject lateinit var internetNetworkListener: InternetNetworkListener + @Inject lateinit var networkStatusManager: NetworkStatusManager @Inject lateinit var systemBarColorAnalyzer: SystemBarColorAnalyzer override val activityViewModel: MainViewModel by viewModels() @@ -45,8 +44,8 @@ class MainActivity : BaseActivity(ActivityMa systemBarController.init(this, window, this) systemBarColorAnalyzer.init(this, systemBarController, lifecycle) - internetNetworkListener.activityLifeCycle = lifecycle - internetNetworkListener.networkStateCallback = InternetNetworkListener.NetworkStateCallback { isConnected -> + networkStatusManager.activityLifeCycle = lifecycle + networkStatusManager.networkStateCallback = NetworkStatusManager.NetworkStateCallback { isConnected -> if (!isConnected) { NetworkStateDialogFragment().show(supportFragmentManager, NetworkStateDialogFragment::class.java.name) } diff --git a/core/common/build.gradle.kts b/core/common/build.gradle.kts index 0c690e646..cfbcf160a 100644 --- a/core/common/build.gradle.kts +++ b/core/common/build.gradle.kts @@ -21,10 +21,10 @@ android { buildConfigField("String", "AWS_BASE_URL", "\"${properties["awsUrl"]}\"") buildConfigField("String", "VERTEX_ENDPOINT_URL", "\"${properties["vertexEndpointUrl"]}\"") } -} -hilt { - enableAggregatingTask = true + hilt { + enableAggregatingTask = true + } } dependencies { diff --git a/core/common/src/main/java/com/android/mediproject/core/common/bindingadapter/BindingAdapter.kt b/core/common/src/main/java/com/android/mediproject/core/common/bindingadapter/BindingAdapter.kt index 9ab7a1b8c..2b34a8a88 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/bindingadapter/BindingAdapter.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/bindingadapter/BindingAdapter.kt @@ -1,6 +1,5 @@ package com.android.mediproject.core.common.bindingadapter -import android.content.res.ColorStateList import android.graphics.Bitmap import android.text.Spanned import android.view.View @@ -27,15 +26,14 @@ object BindingAdapter { textView.text = arr[type.ordinal] } - @BindingAdapter("img") + @BindingAdapter(value = ["img", "caching"], requireAll = false) @JvmStatic - fun loadImage(imageView: ImageView, img: String) { + fun loadImage(imageView: ImageView, img: String, caching: Boolean = true) { if (img.isEmpty()) { imageView.setBackgroundResource(R.drawable.baseline_hide_image_24) - imageView.imageTintList = ColorStateList.valueOf(android.graphics.Color.BLUE) return } - GlideApp.with(imageView.context).load(img).centerInside().skipMemoryCache(false).into(imageView) + GlideApp.with(imageView.context).load(img).centerInside().skipMemoryCache(caching).into(imageView) } @BindingAdapter("img") diff --git a/core/common/src/main/java/com/android/mediproject/core/common/di/CommonModule.kt b/core/common/src/main/java/com/android/mediproject/core/common/di/CommonModule.kt index 19b40e55f..1f1c6fa54 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/di/CommonModule.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/di/CommonModule.kt @@ -1,8 +1,8 @@ package com.android.mediproject.core.common.di -import com.android.mediproject.core.common.uiutil.LayoutController -import com.android.mediproject.core.common.uiutil.SystemBarController -import com.android.mediproject.core.common.uiutil.SystemBarStyler +import com.android.mediproject.core.common.util.LayoutController +import com.android.mediproject.core.common.util.SystemBarController +import com.android.mediproject.core.common.util.SystemBarStyler import dagger.Module import dagger.Provides import dagger.hilt.InstallIn diff --git a/core/common/src/main/java/com/android/mediproject/core/common/dialog/ProgressIndicator.kt b/core/common/src/main/java/com/android/mediproject/core/common/dialog/ProgressIndicator.kt index bc71d7746..4ff696dd2 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/dialog/ProgressIndicator.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/dialog/ProgressIndicator.kt @@ -10,7 +10,7 @@ import androidx.core.content.ContextCompat import com.airbnb.lottie.LottieAnimationView import com.airbnb.lottie.LottieDrawable.INFINITE import com.android.mediproject.core.common.R -import com.android.mediproject.core.common.uiutil.dpToPx +import com.android.mediproject.core.common.util.dpToPx class ProgressIndicator(context: Context, textMessage: String?) : ConstraintLayout(context) { @@ -34,18 +34,24 @@ class ProgressIndicator(context: Context, textMessage: String?) : ConstraintLayo init { background = ContextCompat.getDrawable(context, R.drawable.progress_background) - addView(lottie, LayoutParams(LayoutParams.WRAP_CONTENT, dpToPx(context, 31)).apply { - topToTop = LayoutParams.PARENT_ID - startToStart = LayoutParams.PARENT_ID - endToEnd = LayoutParams.PARENT_ID - }) - addView(textView, LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT).apply { - topToBottom = lottie.id - topMargin = dpToPx(context, 16) - startToStart = LayoutParams.PARENT_ID - endToEnd = LayoutParams.PARENT_ID - }) + addView( + lottie, + LayoutParams(LayoutParams.WRAP_CONTENT, 31.dpToPx()).apply { + topToTop = LayoutParams.PARENT_ID + startToStart = LayoutParams.PARENT_ID + endToEnd = LayoutParams.PARENT_ID + }, + ) + addView( + textView, + LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT).apply { + topToBottom = lottie.id + topMargin = 16.dpToPx() + startToStart = LayoutParams.PARENT_ID + endToEnd = LayoutParams.PARENT_ID + }, + ) lottie.playAnimation() } -} \ No newline at end of file +} diff --git a/core/common/src/main/java/com/android/mediproject/core/common/mapper/MedicineInfoMapper.kt b/core/common/src/main/java/com/android/mediproject/core/common/mapper/MedicineInfoMapper.kt index ab215d5f4..29e702f5e 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/mapper/MedicineInfoMapper.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/mapper/MedicineInfoMapper.kt @@ -14,7 +14,7 @@ import androidx.core.content.ContextCompat import androidx.core.text.toSpanned import com.android.mediproject.core.common.R import com.android.mediproject.core.model.medicine.medicinedetailinfo.MedicineDetail -import com.android.mediproject.core.model.remote.granule.GranuleIdentificationInfoDto +import com.android.mediproject.core.model.granule.GranuleIdentificationInfo import com.android.mediproject.core.model.util.XMLParsedResult import java.lang.ref.WeakReference import javax.inject.Inject @@ -90,7 +90,7 @@ class MedicineInfoMapper @Inject constructor() { } - suspend fun toGranuleInfo(context: Context, granuleDto: GranuleIdentificationInfoDto): Spanned = + suspend fun toGranuleInfo(context: Context, granuleDto: GranuleIdentificationInfo): Spanned = mutableMapOf>>().apply { // 그룹 1: 의약품 정보 context.resources.getStringArray(R.array.medicineInfo).also { diff --git a/core/common/src/main/java/com/android/mediproject/core/common/network/di/DispatchersModule.kt b/core/common/src/main/java/com/android/mediproject/core/common/network/di/DispatchersModule.kt index 546bd74fd..89ff38d93 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/network/di/DispatchersModule.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/network/di/DispatchersModule.kt @@ -14,7 +14,7 @@ import kotlinx.coroutines.Dispatchers object DispatchersModule { @Provides @Dispatcher(MediDispatchers.IO) - fun providesIODispatcher(): CoroutineDispatcher = Dispatchers.IO + fun providesIoDispatcher(): CoroutineDispatcher = Dispatchers.IO @Provides @Dispatcher(MediDispatchers.Default) @@ -23,4 +23,4 @@ object DispatchersModule { @Provides @Dispatcher(MediDispatchers.Main) fun providesMainDispatcher(): CoroutineDispatcher = Dispatchers.Main -} \ No newline at end of file +} diff --git a/core/common/src/main/java/com/android/mediproject/core/common/uiutil/DimensionUtil.kt b/core/common/src/main/java/com/android/mediproject/core/common/uiutil/DimensionUtil.kt deleted file mode 100644 index ff413156c..000000000 --- a/core/common/src/main/java/com/android/mediproject/core/common/uiutil/DimensionUtil.kt +++ /dev/null @@ -1,20 +0,0 @@ -package com.android.mediproject.core.common.uiutil - -import android.content.Context -import android.util.TypedValue - -fun dpToPx(context: Context, dp: Int): Int = TypedValue.applyDimension( - TypedValue.COMPLEX_UNIT_DIP, dp.toFloat(), context.resources.displayMetrics -).toInt() - -fun spToPx(context: Context, sp: Int): Int = TypedValue.applyDimension( - TypedValue.COMPLEX_UNIT_SP, sp.toFloat(), context.resources.displayMetrics -).toInt() - -fun Int.dpToPx(context: Context): Int = TypedValue.applyDimension( - TypedValue.COMPLEX_UNIT_DIP, this.toFloat(), context.resources.displayMetrics -).toInt() - -fun Int.spToPx(context: Context): Int = TypedValue.applyDimension( - TypedValue.COMPLEX_UNIT_SP, this.toFloat(), context.resources.displayMetrics -).toInt() \ No newline at end of file diff --git a/core/common/src/main/java/com/android/mediproject/core/common/util/DimensionUtil.kt b/core/common/src/main/java/com/android/mediproject/core/common/util/DimensionUtil.kt new file mode 100644 index 000000000..11076de7c --- /dev/null +++ b/core/common/src/main/java/com/android/mediproject/core/common/util/DimensionUtil.kt @@ -0,0 +1,13 @@ +package com.android.mediproject.core.common.util + +import android.content.res.Resources +import android.util.TypedValue + + +fun Int.dpToPx(): Int = TypedValue.applyDimension( + TypedValue.COMPLEX_UNIT_DIP, this.toFloat(), Resources.getSystem().displayMetrics, +).toInt() + +fun Int.spToPx(): Int = TypedValue.applyDimension( + TypedValue.COMPLEX_UNIT_SP, this.toFloat(), Resources.getSystem().displayMetrics, +).toInt() diff --git a/core/common/src/main/java/com/android/mediproject/core/common/uiutil/EditableUtil.kt b/core/common/src/main/java/com/android/mediproject/core/common/util/EditableUtil.kt similarity index 68% rename from core/common/src/main/java/com/android/mediproject/core/common/uiutil/EditableUtil.kt rename to core/common/src/main/java/com/android/mediproject/core/common/util/EditableUtil.kt index 06a2c7958..2590b6699 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/uiutil/EditableUtil.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/util/EditableUtil.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.common.uiutil +package com.android.mediproject.core.common.util import android.text.Editable diff --git a/core/common/src/main/java/com/android/mediproject/core/common/util/KeepFragmentNavigator.kt b/core/common/src/main/java/com/android/mediproject/core/common/util/KeepFragmentNavigator.kt index d909c21b4..678db0f6e 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/util/KeepFragmentNavigator.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/util/KeepFragmentNavigator.kt @@ -25,7 +25,6 @@ import androidx.navigation.Navigator import androidx.navigation.NavigatorProvider import androidx.navigation.NavigatorState import com.android.mediproject.core.common.R -import com.android.mediproject.core.common.uiutil.SystemBarColorAnalyzer import java.lang.ref.WeakReference @Navigator.Name("keep_fragment") @@ -257,34 +256,6 @@ class KeepFragmentNavigator( override fun createDestination(): Destination = Destination(this) - /** - * Instantiates the Fragment via the FragmentManager's - * [androidx.fragment.app.FragmentFactory]. - * - * Note that this method is **not** responsible for calling - * [Fragment.setArguments] on the returned Fragment instance. - * - * @param context Context providing the correct [ClassLoader] - * @param fragmentManager FragmentManager the Fragment will be added to - * @param className The Fragment to instantiate - * @param args The Fragment's arguments, if any - * @return A new fragment instance. - */ - @Suppress("DeprecatedCallableAddReplaceWith") - @Deprecated( - """Set a custom {@link androidx.fragment.app.FragmentFactory} via - {@link FragmentManager#setFragmentFactory(FragmentFactory)} to control - instantiation of Fragments.""", - ) - private fun instantiateFragment( - context: Context, - fragmentManager: FragmentManager, - className: String, - args: Bundle?, - ): Fragment { - return fragmentManager.fragmentFactory.instantiate(context.classLoader, className) - } - /** * {@inheritDoc} * diff --git a/core/common/src/main/java/com/android/mediproject/core/common/uiutil/Keyboard.kt b/core/common/src/main/java/com/android/mediproject/core/common/util/Keyboard.kt similarity index 91% rename from core/common/src/main/java/com/android/mediproject/core/common/uiutil/Keyboard.kt rename to core/common/src/main/java/com/android/mediproject/core/common/util/Keyboard.kt index ce918aa4b..eb283e888 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/uiutil/Keyboard.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/util/Keyboard.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.common.uiutil +package com.android.mediproject.core.common.util import android.content.Context import android.view.inputmethod.InputMethodManager diff --git a/core/common/src/main/java/com/android/mediproject/core/common/uiutil/SystemBarColorAnalyzer.kt b/core/common/src/main/java/com/android/mediproject/core/common/util/SystemBarColorAnalyzer.kt similarity index 98% rename from core/common/src/main/java/com/android/mediproject/core/common/uiutil/SystemBarColorAnalyzer.kt rename to core/common/src/main/java/com/android/mediproject/core/common/util/SystemBarColorAnalyzer.kt index f96315a8c..c4045223e 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/uiutil/SystemBarColorAnalyzer.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/util/SystemBarColorAnalyzer.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.common.uiutil +package com.android.mediproject.core.common.util import android.annotation.SuppressLint import android.app.Activity @@ -55,6 +55,8 @@ class SystemBarColorAnalyzer @Inject constructor() { private val criteriaColor = 140 private var systemBarController: SystemBarController? = null + private val delayTime = 80L + private val _statusBarColor = MutableSharedFlow( onBufferOverflow = BufferOverflow.DROP_OLDEST, replay = 1, extraBufferCapacity = 5, @@ -158,7 +160,7 @@ class SystemBarColorAnalyzer @Inject constructor() { waitLock.withLock { if (waiting?.isActive == true) waiting?.cancel() waiting = launch(Dispatchers.Default) { - delay(80) + delay(delayTime) onChangedFragmentFlow.emit(Unit) } } diff --git a/core/common/src/main/java/com/android/mediproject/core/common/uiutil/SystemBarStyler.kt b/core/common/src/main/java/com/android/mediproject/core/common/util/SystemBarStyler.kt similarity index 98% rename from core/common/src/main/java/com/android/mediproject/core/common/uiutil/SystemBarStyler.kt rename to core/common/src/main/java/com/android/mediproject/core/common/util/SystemBarStyler.kt index 6d0c64497..33b6871a3 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/uiutil/SystemBarStyler.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/util/SystemBarStyler.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.common.uiutil +package com.android.mediproject.core.common.util import android.annotation.SuppressLint import android.content.Context diff --git a/core/common/src/main/java/com/android/mediproject/core/common/util/UriBuilder.kt b/core/common/src/main/java/com/android/mediproject/core/common/util/UriBuilder.kt index 5ba6ad205..2a7ca24df 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/util/UriBuilder.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/util/UriBuilder.kt @@ -13,7 +13,7 @@ import androidx.navigation.NavDeepLinkRequest import androidx.navigation.NavDestination import androidx.navigation.NavOptions import androidx.navigation.NavType -import com.android.mediproject.core.model.local.navargs.BaseNavArgs +import com.android.mediproject.core.model.navargs.BaseNavArgs /** * Uri Builder diff --git a/core/common/src/main/java/com/android/mediproject/core/common/values.kt b/core/common/src/main/java/com/android/mediproject/core/common/values.kt index ad3ff7468..857474174 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/values.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/values.kt @@ -2,7 +2,7 @@ package com.android.mediproject.core.common const val DATA_GO_KR_PAGE_SIZE = 15 -const val DATA_GO_KR_DEFAULT_ROW_SIZE = 15 -const val DATA_GO_KR_DEFAULT_PAGE_NO = 1 -const val AWS_LOAD_PAGE_SIZE = 100 +const val DATA_GO_KR_ROW_SIZE = 15 +const val DATA_GO_KR_PAGE_NO = 1 +const val SERVER_PAGE_SIZE = 100 const val JSON = "json" diff --git a/core/common/src/main/java/com/android/mediproject/core/common/viewmodel/UiState.kt b/core/common/src/main/java/com/android/mediproject/core/common/viewmodel/UiState.kt index d7619c1c9..6aa0900e3 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/viewmodel/UiState.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/viewmodel/UiState.kt @@ -9,9 +9,29 @@ package com.android.mediproject.core.common.viewmodel * @see UiState.Error * */ -sealed class UiState { - object Initial : UiState() - object Loading : UiState() - data class Success(val data: R) : UiState() - data class Error(val message: String) : UiState() -} \ No newline at end of file +sealed interface UiState { + object Initial : UiState + object Loading : UiState + data class Success(val data: R) : UiState + data class Error(val message: String) : UiState +} + +fun UiState.isInitalizing(block: () -> Unit): UiState { + if (this is UiState.Initial) block() + return this +} + +fun UiState.isLoading(block: () -> Unit): UiState { + if (this is UiState.Loading) block() + return this +} + +fun UiState.isSuccess(block: (T) -> Unit): UiState { + if (this is UiState.Success) block(data) + return this +} + +fun UiState.isError(block: (String) -> Unit): UiState { + if (this is UiState.Error) block(message) + return this +} diff --git a/core/data/build.gradle.kts b/core/data/build.gradle.kts index c2ce1d804..a6042ace9 100644 --- a/core/data/build.gradle.kts +++ b/core/data/build.gradle.kts @@ -5,9 +5,11 @@ plugins { android { namespace = "com.android.mediproject.core.data" -} -hilt { - enableAggregatingTask = true + + hilt { + enableAggregatingTask = true + } + } dependencies { diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/di/RepositoryModule.kt b/core/data/src/main/java/com/android/mediproject/core/data/RepositoryModule.kt similarity index 75% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/di/RepositoryModule.kt rename to core/data/src/main/java/com/android/mediproject/core/data/RepositoryModule.kt index b9ca05050..c5c653780 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/di/RepositoryModule.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/RepositoryModule.kt @@ -1,35 +1,35 @@ -package com.android.mediproject.core.data.remote.di +package com.android.mediproject.core.data import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers +import com.android.mediproject.core.data.adminaction.AdminActionRepository +import com.android.mediproject.core.data.adminaction.AdminActionRepositoryImpl +import com.android.mediproject.core.data.comments.CommentsRepository +import com.android.mediproject.core.data.comments.CommentsRepositoryImpl import com.android.mediproject.core.data.dur.duringr.DurIngrRepository import com.android.mediproject.core.data.dur.duringr.DurIngrRepositoryImpl import com.android.mediproject.core.data.dur.durproduct.DurProductRepository import com.android.mediproject.core.data.dur.durproduct.DurProductRepositoryImpl -import com.android.mediproject.core.data.remote.adminaction.AdminActionRepository -import com.android.mediproject.core.data.remote.adminaction.AdminActionRepositoryImpl -import com.android.mediproject.core.data.remote.comments.CommentsRepository -import com.android.mediproject.core.data.remote.comments.CommentsRepositoryImpl -import com.android.mediproject.core.data.remote.favoritemedicine.FavoriteMedicineRepository -import com.android.mediproject.core.data.remote.favoritemedicine.FavoriteMedicineRepositoryImpl -import com.android.mediproject.core.data.remote.granule.GranuleIdentificationRepository -import com.android.mediproject.core.data.remote.granule.GranuleIdentificationRepositoryImpl -import com.android.mediproject.core.data.remote.medicineapproval.MedicineApprovalRepository -import com.android.mediproject.core.data.remote.medicineapproval.MedicineApprovalRepositoryImpl -import com.android.mediproject.core.data.remote.medicineid.MedicineIdRepository -import com.android.mediproject.core.data.remote.medicineid.MedicineIdRepositoryImpl -import com.android.mediproject.core.data.remote.recallsuspension.RecallSuspensionRepository -import com.android.mediproject.core.data.remote.recallsuspension.RecallSuspensionRepositoryImpl -import com.android.mediproject.core.data.remote.sign.SignRepository -import com.android.mediproject.core.data.remote.sign.SignRepositoryImpl -import com.android.mediproject.core.data.remote.token.TokenRepository -import com.android.mediproject.core.data.remote.token.TokenRepositoryImpl -import com.android.mediproject.core.data.remote.user.UserInfoRepository -import com.android.mediproject.core.data.remote.user.UserInfoRepositoryImpl -import com.android.mediproject.core.data.remote.user.UserRepository -import com.android.mediproject.core.data.remote.user.UserRepositoryImpl +import com.android.mediproject.core.data.favoritemedicine.FavoriteMedicineRepository +import com.android.mediproject.core.data.favoritemedicine.FavoriteMedicineRepositoryImpl +import com.android.mediproject.core.data.granule.GranuleIdentificationRepository +import com.android.mediproject.core.data.granule.GranuleIdentificationRepositoryImpl +import com.android.mediproject.core.data.medicineapproval.MedicineApprovalRepository +import com.android.mediproject.core.data.medicineapproval.MedicineApprovalRepositoryImpl +import com.android.mediproject.core.data.medicineid.MedicineIdRepository +import com.android.mediproject.core.data.medicineid.MedicineIdRepositoryImpl +import com.android.mediproject.core.data.recallsuspension.RecallSuspensionRepository +import com.android.mediproject.core.data.recallsuspension.RecallSuspensionRepositoryImpl import com.android.mediproject.core.data.search.SearchHistoryRepository import com.android.mediproject.core.data.search.SearchHistoryRepositoryImpl +import com.android.mediproject.core.data.sign.SignRepository +import com.android.mediproject.core.data.sign.SignRepositoryImpl +import com.android.mediproject.core.data.token.TokenRepository +import com.android.mediproject.core.data.token.TokenRepositoryImpl +import com.android.mediproject.core.data.user.UserInfoRepository +import com.android.mediproject.core.data.user.UserInfoRepositoryImpl +import com.android.mediproject.core.data.user.UserRepository +import com.android.mediproject.core.data.user.UserRepositoryImpl import com.android.mediproject.core.database.cache.manager.MedicineDataCacheManager import com.android.mediproject.core.database.searchhistory.SearchHistoryDao import com.android.mediproject.core.datastore.AppDataStore diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/adminaction/AdminActionRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/adminaction/AdminActionRepository.kt similarity index 57% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/adminaction/AdminActionRepository.kt rename to core/data/src/main/java/com/android/mediproject/core/data/adminaction/AdminActionRepository.kt index b75364999..320dd78d9 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/adminaction/AdminActionRepository.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/adminaction/AdminActionRepository.kt @@ -1,7 +1,7 @@ -package com.android.mediproject.core.data.remote.adminaction +package com.android.mediproject.core.data.adminaction import androidx.paging.PagingData -import com.android.mediproject.core.model.remote.adminaction.AdminActionListResponse +import com.android.mediproject.core.model.adminaction.AdminActionListResponse import kotlinx.coroutines.flow.Flow interface AdminActionRepository { diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/adminaction/AdminActionRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/adminaction/AdminActionRepositoryImpl.kt similarity index 84% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/adminaction/AdminActionRepositoryImpl.kt rename to core/data/src/main/java/com/android/mediproject/core/data/adminaction/AdminActionRepositoryImpl.kt index f980f67f4..bfe26b55c 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/adminaction/AdminActionRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/adminaction/AdminActionRepositoryImpl.kt @@ -1,10 +1,10 @@ -package com.android.mediproject.core.data.remote.adminaction +package com.android.mediproject.core.data.adminaction import androidx.paging.Pager import androidx.paging.PagingConfig import androidx.paging.PagingData import com.android.mediproject.core.common.DATA_GO_KR_PAGE_SIZE -import com.android.mediproject.core.model.remote.adminaction.AdminActionListResponse +import com.android.mediproject.core.model.adminaction.AdminActionListResponse import com.android.mediproject.core.network.datasource.penalties.adminaction.AdminActionListDataSourceImpl import kotlinx.coroutines.flow.Flow import javax.inject.Inject diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/comments/CommentsRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/comments/CommentsRepository.kt similarity index 88% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/comments/CommentsRepository.kt rename to core/data/src/main/java/com/android/mediproject/core/data/comments/CommentsRepository.kt index 1568281c9..fcb2c4037 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/comments/CommentsRepository.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/comments/CommentsRepository.kt @@ -1,10 +1,10 @@ -package com.android.mediproject.core.data.remote.comments +package com.android.mediproject.core.data.comments import androidx.paging.PagingData import com.android.mediproject.core.model.comments.CommentChangedResponse import com.android.mediproject.core.model.comments.CommentListResponse import com.android.mediproject.core.model.comments.LikeResponse -import com.android.mediproject.core.model.comments.MyCommentDto +import com.android.mediproject.core.model.comments.MyComment import com.android.mediproject.core.model.requestparameters.DeleteCommentParameter import com.android.mediproject.core.model.requestparameters.EditCommentParameter import com.android.mediproject.core.model.requestparameters.LikeCommentParameter @@ -19,7 +19,7 @@ interface CommentsRepository { /** * 내가 작성한 댓글을 가져오는 메서드입니다. */ - fun getMyComments(userId: Int): Flow> + fun getMyComments(userId: Int): Flow> /** * 댓글을 수정합니다. @@ -41,4 +41,4 @@ interface CommentsRepository { * 댓글 좋아요 클릭 */ fun likeComment(parameter: LikeCommentParameter): Flow> -} \ No newline at end of file +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/comments/CommentsRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/comments/CommentsRepositoryImpl.kt similarity index 89% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/comments/CommentsRepositoryImpl.kt rename to core/data/src/main/java/com/android/mediproject/core/data/comments/CommentsRepositoryImpl.kt index 058685318..e685678d1 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/comments/CommentsRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/comments/CommentsRepositoryImpl.kt @@ -1,15 +1,15 @@ -package com.android.mediproject.core.data.remote.comments +package com.android.mediproject.core.data.comments import androidx.paging.Pager import androidx.paging.PagingConfig import androidx.paging.PagingData -import com.android.mediproject.core.common.AWS_LOAD_PAGE_SIZE -import com.android.mediproject.core.data.remote.token.TokenRepository +import com.android.mediproject.core.common.SERVER_PAGE_SIZE +import com.android.mediproject.core.data.token.TokenRepository import com.android.mediproject.core.model.comments.CommentChangedResponse import com.android.mediproject.core.model.comments.CommentListResponse import com.android.mediproject.core.model.comments.LikeResponse -import com.android.mediproject.core.model.comments.MyCommentDto -import com.android.mediproject.core.model.remote.token.TokenState +import com.android.mediproject.core.model.comments.MyComment +import com.android.mediproject.core.model.token.TokenState import com.android.mediproject.core.model.requestparameters.DeleteCommentParameter import com.android.mediproject.core.model.requestparameters.EditCommentParameter import com.android.mediproject.core.model.requestparameters.LikeCommentParameter @@ -28,13 +28,13 @@ class CommentsRepositoryImpl @Inject constructor( ) : CommentsRepository { override fun getCommentsForAMedicine(medicineId: Long): Flow> = Pager( - config = PagingConfig(pageSize = AWS_LOAD_PAGE_SIZE, prefetchDistance = 0), + config = PagingConfig(pageSize = SERVER_PAGE_SIZE, prefetchDistance = 0), pagingSourceFactory = { CommentsListDataSourceImpl(commentsDataSource, medicineId) }, ).flow - override fun getMyComments(userId: Int): Flow> { + override fun getMyComments(userId: Int): Flow> { TODO("Not yet implemented") } diff --git a/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepositoryImpl.kt index 436a22c8d..3f6f89812 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepositoryImpl.kt @@ -1,7 +1,7 @@ package com.android.mediproject.core.data.dur.durproduct import com.android.mediproject.core.model.DataGoKrResponse -import com.android.mediproject.core.model.datagokr.DurType +import com.android.mediproject.core.model.dur.DurType import com.android.mediproject.core.network.datasource.dur.DurProductDataSource import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/favoritemedicine/FavoriteMedicineRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/favoritemedicine/FavoriteMedicineRepository.kt similarity index 93% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/favoritemedicine/FavoriteMedicineRepository.kt rename to core/data/src/main/java/com/android/mediproject/core/data/favoritemedicine/FavoriteMedicineRepository.kt index b2810fdbe..5dd19ce39 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/favoritemedicine/FavoriteMedicineRepository.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/favoritemedicine/FavoriteMedicineRepository.kt @@ -1,9 +1,9 @@ -package com.android.mediproject.core.data.remote.favoritemedicine +package com.android.mediproject.core.data.favoritemedicine +import com.android.mediproject.core.model.favoritemedicine.CheckFavoriteMedicineResponse import com.android.mediproject.core.model.favoritemedicine.DeleteFavoriteMedicineResponse import com.android.mediproject.core.model.favoritemedicine.FavoriteMedicineListResponse -import com.android.mediproject.core.model.favoritemedicine.CheckFavoriteMedicineResponse import com.android.mediproject.core.model.favoritemedicine.NewFavoriteMedicineResponse import com.android.mediproject.core.model.requestparameters.AddFavoriteMedicineParameter import kotlinx.coroutines.flow.Flow @@ -16,4 +16,4 @@ interface FavoriteMedicineRepository { fun deleteFavoriteMedicine(medicineId: Long): Flow> fun checkFavoriteMedicine(itemSeq: Long): Flow> -} \ No newline at end of file +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/favoritemedicine/FavoriteMedicineRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/favoritemedicine/FavoriteMedicineRepositoryImpl.kt similarity index 96% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/favoritemedicine/FavoriteMedicineRepositoryImpl.kt rename to core/data/src/main/java/com/android/mediproject/core/data/favoritemedicine/FavoriteMedicineRepositoryImpl.kt index 016f03501..c3e0130e0 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/favoritemedicine/FavoriteMedicineRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/favoritemedicine/FavoriteMedicineRepositoryImpl.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.data.remote.favoritemedicine +package com.android.mediproject.core.data.favoritemedicine import com.android.mediproject.core.model.favoritemedicine.DeleteFavoriteMedicineResponse import com.android.mediproject.core.model.favoritemedicine.FavoriteMedicineListResponse @@ -29,4 +29,4 @@ class FavoriteMedicineRepositoryImpl @Inject constructor(private val favoriteMed override fun checkFavoriteMedicine(itemSeq: Long): Flow> = favoriteMedicineDataSource.checkFavoriteMedicine(itemSeq) -} \ No newline at end of file +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/granule/GranuleIdentificationRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/granule/GranuleIdentificationRepository.kt similarity index 63% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/granule/GranuleIdentificationRepository.kt rename to core/data/src/main/java/com/android/mediproject/core/data/granule/GranuleIdentificationRepository.kt index a65b153a0..ac90ebbd1 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/granule/GranuleIdentificationRepository.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/granule/GranuleIdentificationRepository.kt @@ -1,6 +1,6 @@ -package com.android.mediproject.core.data.remote.granule +package com.android.mediproject.core.data.granule -import com.android.mediproject.core.model.remote.granule.GranuleIdentificationInfoResponse +import com.android.mediproject.core.model.granule.GranuleIdentificationInfoResponse import kotlinx.coroutines.flow.Flow interface GranuleIdentificationRepository { diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/granule/GranuleIdentificationRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/granule/GranuleIdentificationRepositoryImpl.kt similarity index 53% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/granule/GranuleIdentificationRepositoryImpl.kt rename to core/data/src/main/java/com/android/mediproject/core/data/granule/GranuleIdentificationRepositoryImpl.kt index e9d838379..9cb1a4af2 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/granule/GranuleIdentificationRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/granule/GranuleIdentificationRepositoryImpl.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.data.remote.granule +package com.android.mediproject.core.data.granule import com.android.mediproject.core.network.datasource.granule.GranuleIdentificationDataSource import kotlinx.coroutines.flow.flatMapLatest @@ -6,18 +6,21 @@ import kotlinx.coroutines.flow.flowOf import javax.inject.Inject class GranuleIdentificationRepositoryImpl @Inject constructor( - private val dataSource: GranuleIdentificationDataSource + private val dataSource: GranuleIdentificationDataSource, ) : GranuleIdentificationRepository { override fun getGranuleIdentificationInfo( - itemName: String?, entpName: String?, itemSeq: String? + itemName: String?, entpName: String?, itemSeq: String?, ) = dataSource.getGranuleIdentificationInfo(itemName = itemName, entpName = entpName, itemSeq = itemSeq).flatMapLatest { result -> - result.fold(onSuccess = { response -> - flowOf(Result.success(response.body.items.first())) - }, onFailure = { - flowOf(Result.failure(it)) - }) + result.fold( + onSuccess = { response -> + flowOf(Result.success(response.body.items.first())) + }, + onFailure = { + flowOf(Result.failure(it)) + }, + ) } -} \ No newline at end of file +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/medicineapproval/MedicineApprovalRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/medicineapproval/MedicineApprovalRepository.kt similarity index 86% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/medicineapproval/MedicineApprovalRepository.kt rename to core/data/src/main/java/com/android/mediproject/core/data/medicineapproval/MedicineApprovalRepository.kt index b6f10c453..2e2a9a4ab 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/medicineapproval/MedicineApprovalRepository.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/medicineapproval/MedicineApprovalRepository.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.data.remote.medicineapproval +package com.android.mediproject.core.data.medicineapproval import androidx.paging.PagingData import com.android.mediproject.core.model.medicine.medicineapproval.MedicineApprovalListResponse @@ -6,7 +6,7 @@ import com.android.mediproject.core.model.medicine.medicinedetailinfo.MedicineDe import kotlinx.coroutines.flow.Flow interface MedicineApprovalRepository { - fun getMedicineApprovalList( + suspend fun getMedicineApprovalList( itemName: String?, entpName: String?, medicationType: String?, diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/medicineapproval/MedicineApprovalRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/medicineapproval/MedicineApprovalRepositoryImpl.kt similarity index 94% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/medicineapproval/MedicineApprovalRepositoryImpl.kt rename to core/data/src/main/java/com/android/mediproject/core/data/medicineapproval/MedicineApprovalRepositoryImpl.kt index 9a0340398..e5e78557a 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/medicineapproval/MedicineApprovalRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/medicineapproval/MedicineApprovalRepositoryImpl.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.data.remote.medicineapproval +package com.android.mediproject.core.data.medicineapproval import androidx.paging.Pager import androidx.paging.PagingConfig @@ -34,7 +34,7 @@ class MedicineApprovalRepositoryImpl @Inject constructor( * @param entpName 업체명 * */ - override fun getMedicineApprovalList(itemName: String?, entpName: String?, medicationType: String?): + override suspend fun getMedicineApprovalList(itemName: String?, entpName: String?, medicationType: String?): Flow> { searchHistoryRepository.insertSearchHistory(SearchHistoryDto(itemName ?: entpName!!)) return Pager( diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/medicineid/MedicineIdRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/medicineid/MedicineIdRepository.kt similarity index 84% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/medicineid/MedicineIdRepository.kt rename to core/data/src/main/java/com/android/mediproject/core/data/medicineid/MedicineIdRepository.kt index 5cbed655f..463cda481 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/medicineid/MedicineIdRepository.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/medicineid/MedicineIdRepository.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.data.remote.medicineid +package com.android.mediproject.core.data.medicineid import com.android.mediproject.core.model.medicine.MedicineIdResponse import com.android.mediproject.core.model.requestparameters.GetMedicineIdParameter @@ -6,4 +6,4 @@ import kotlinx.coroutines.flow.Flow interface MedicineIdRepository { fun getMedicineId(getMedicineIdParameter: GetMedicineIdParameter): Flow> -} \ No newline at end of file +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/medicineid/MedicineIdRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/medicineid/MedicineIdRepositoryImpl.kt similarity index 82% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/medicineid/MedicineIdRepositoryImpl.kt rename to core/data/src/main/java/com/android/mediproject/core/data/medicineid/MedicineIdRepositoryImpl.kt index 938f937d7..871654d7c 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/medicineid/MedicineIdRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/medicineid/MedicineIdRepositoryImpl.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.data.remote.medicineid +package com.android.mediproject.core.data.medicineid import com.android.mediproject.core.model.medicine.MedicineIdResponse import com.android.mediproject.core.model.requestparameters.GetMedicineIdParameter @@ -7,8 +7,8 @@ import kotlinx.coroutines.flow.Flow import javax.inject.Inject class MedicineIdRepositoryImpl @Inject constructor( - private val medicineIdDataSource: MedicineIdDataSource + private val medicineIdDataSource: MedicineIdDataSource, ) : MedicineIdRepository { override fun getMedicineId(getMedicineIdParameter: GetMedicineIdParameter): Flow> = medicineIdDataSource.getMedicineId(getMedicineIdParameter) -} \ No newline at end of file +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/recallsuspension/RecallSuspensionRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/recallsuspension/RecallSuspensionRepository.kt similarity index 67% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/recallsuspension/RecallSuspensionRepository.kt rename to core/data/src/main/java/com/android/mediproject/core/data/recallsuspension/RecallSuspensionRepository.kt index 4b9a7bae0..f3f819732 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/recallsuspension/RecallSuspensionRepository.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/recallsuspension/RecallSuspensionRepository.kt @@ -1,8 +1,8 @@ -package com.android.mediproject.core.data.remote.recallsuspension +package com.android.mediproject.core.data.recallsuspension import androidx.paging.PagingData -import com.android.mediproject.core.model.remote.recall.DetailRecallSuspensionResponse -import com.android.mediproject.core.model.remote.recall.RecallSuspensionListResponse +import com.android.mediproject.core.model.recall.DetailRecallSuspensionResponse +import com.android.mediproject.core.model.recall.RecallSuspensionListResponse import kotlinx.coroutines.flow.Flow interface RecallSuspensionRepository { diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/recallsuspension/RecallSuspensionRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/recallsuspension/RecallSuspensionRepositoryImpl.kt similarity index 88% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/recallsuspension/RecallSuspensionRepositoryImpl.kt rename to core/data/src/main/java/com/android/mediproject/core/data/recallsuspension/RecallSuspensionRepositoryImpl.kt index 29397f348..94c5389ab 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/recallsuspension/RecallSuspensionRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/recallsuspension/RecallSuspensionRepositoryImpl.kt @@ -1,11 +1,11 @@ -package com.android.mediproject.core.data.remote.recallsuspension +package com.android.mediproject.core.data.recallsuspension import androidx.paging.Pager import androidx.paging.PagingConfig import androidx.paging.PagingData import com.android.mediproject.core.common.DATA_GO_KR_PAGE_SIZE -import com.android.mediproject.core.model.remote.recall.DetailRecallSuspensionResponse -import com.android.mediproject.core.model.remote.recall.RecallSuspensionListResponse +import com.android.mediproject.core.model.recall.DetailRecallSuspensionResponse +import com.android.mediproject.core.model.recall.RecallSuspensionListResponse import com.android.mediproject.core.network.datasource.penalties.recallsuspension.RecallSuspensionDataSource import com.android.mediproject.core.network.datasource.penalties.recallsuspension.RecallSuspensionListDataSourceImpl import kotlinx.coroutines.flow.Flow diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/token/TokenRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/token/TokenRepository.kt deleted file mode 100644 index 5a74740cf..000000000 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/token/TokenRepository.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.android.mediproject.core.data.remote.token - -import com.android.mediproject.core.model.remote.token.CurrentTokens -import com.android.mediproject.core.model.remote.token.TokenState -import kotlinx.coroutines.flow.Flow - -interface TokenRepository { - fun getCurrentTokens(): Flow> -} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/search/SearchHistoryRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/search/SearchHistoryRepository.kt index 6642fa73b..3c5120d82 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/search/SearchHistoryRepository.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/search/SearchHistoryRepository.kt @@ -6,7 +6,7 @@ import kotlinx.coroutines.flow.Flow interface SearchHistoryRepository { @WorkerThread - fun insertSearchHistory(searchHistoryDto: SearchHistoryDto) + suspend fun insertSearchHistory(searchHistoryDto: SearchHistoryDto) @WorkerThread @@ -19,4 +19,4 @@ interface SearchHistoryRepository { @WorkerThread suspend fun deleteAllSearchHistory() -} \ No newline at end of file +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/search/SearchHistoryRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/search/SearchHistoryRepositoryImpl.kt index e2b478b81..1c734bc78 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/search/SearchHistoryRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/search/SearchHistoryRepositoryImpl.kt @@ -3,19 +3,20 @@ package com.android.mediproject.core.data.search import com.android.mediproject.core.database.searchhistory.SearchHistoryDao import com.android.mediproject.core.database.searchhistory.SearchHistoryDto import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.runBlocking import javax.inject.Inject class SearchHistoryRepositoryImpl @Inject constructor( - private val searchHistoryDao: SearchHistoryDao + private val searchHistoryDao: SearchHistoryDao, ) : SearchHistoryRepository { - override fun insertSearchHistory(searchHistoryDto: SearchHistoryDto) = runBlocking { - searchHistoryDao.insert(searchHistoryDto.apply - { - query = query.trim() - }) + override suspend fun insertSearchHistory(searchHistoryDto: SearchHistoryDto) { + searchHistoryDao.insert( + searchHistoryDto.apply { + query = query.trim() + }, + ) } + override fun getSearchHistoryList(count: Int): Flow> = searchHistoryDao.select(count) @@ -29,4 +30,4 @@ class SearchHistoryRepositoryImpl @Inject constructor( } -} \ No newline at end of file +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/sign/SignRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/sign/SignRepository.kt similarity index 87% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/sign/SignRepository.kt rename to core/data/src/main/java/com/android/mediproject/core/data/sign/SignRepository.kt index 0122d8e71..a7bef078b 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/sign/SignRepository.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/sign/SignRepository.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.data.remote.sign +package com.android.mediproject.core.data.sign import com.android.mediproject.core.model.requestparameters.LoginParameter diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/sign/SignRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/sign/SignRepositoryImpl.kt similarity index 95% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/sign/SignRepositoryImpl.kt rename to core/data/src/main/java/com/android/mediproject/core/data/sign/SignRepositoryImpl.kt index 9cd5d7e8b..0b8cf97c7 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/sign/SignRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/sign/SignRepositoryImpl.kt @@ -1,6 +1,6 @@ -package com.android.mediproject.core.data.remote.sign +package com.android.mediproject.core.data.sign -import com.android.mediproject.core.data.remote.user.UserInfoRepository +import com.android.mediproject.core.data.user.UserInfoRepository import com.android.mediproject.core.datastore.AppDataStore import com.android.mediproject.core.model.requestparameters.LoginParameter diff --git a/core/data/src/main/java/com/android/mediproject/core/data/token/TokenRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/token/TokenRepository.kt new file mode 100644 index 000000000..1bbea79d2 --- /dev/null +++ b/core/data/src/main/java/com/android/mediproject/core/data/token/TokenRepository.kt @@ -0,0 +1,9 @@ +package com.android.mediproject.core.data.token + +import com.android.mediproject.core.model.token.CurrentTokens +import com.android.mediproject.core.model.token.TokenState +import kotlinx.coroutines.flow.Flow + +interface TokenRepository { + fun getCurrentTokens(): Flow> +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/token/TokenRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/token/TokenRepositoryImpl.kt similarity index 90% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/token/TokenRepositoryImpl.kt rename to core/data/src/main/java/com/android/mediproject/core/data/token/TokenRepositoryImpl.kt index d10e5990e..40e5bf050 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/token/TokenRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/token/TokenRepositoryImpl.kt @@ -1,8 +1,8 @@ -package com.android.mediproject.core.data.remote.token +package com.android.mediproject.core.data.token import android.util.Log -import com.android.mediproject.core.model.remote.token.CurrentTokens -import com.android.mediproject.core.model.remote.token.TokenState +import com.android.mediproject.core.model.token.CurrentTokens +import com.android.mediproject.core.model.token.TokenState import com.android.mediproject.core.network.datasource.tokens.TokenDataSource import com.android.mediproject.core.network.tokens.TokenServer import kotlinx.coroutines.flow.Flow diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/user/UserInfoRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/user/UserInfoRepository.kt similarity index 88% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/user/UserInfoRepository.kt rename to core/data/src/main/java/com/android/mediproject/core/data/user/UserInfoRepository.kt index cd2ac7a15..f1ca20b72 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/user/UserInfoRepository.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/user/UserInfoRepository.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.data.remote.user +package com.android.mediproject.core.data.user import com.android.mediproject.core.model.user.AccountState import com.android.mediproject.core.model.user.remote.UserResponse @@ -12,4 +12,4 @@ interface UserInfoRepository { suspend fun updateMyAccountInfo(accountState: AccountState) suspend fun loadAccountState() -} \ No newline at end of file +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/user/UserInfoRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/user/UserInfoRepositoryImpl.kt similarity index 96% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/user/UserInfoRepositoryImpl.kt rename to core/data/src/main/java/com/android/mediproject/core/data/user/UserInfoRepositoryImpl.kt index 4c035fda0..2048399c3 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/user/UserInfoRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/user/UserInfoRepositoryImpl.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.data.remote.user +package com.android.mediproject.core.data.user import com.android.mediproject.core.datastore.AppDataStore import com.android.mediproject.core.model.user.AccountState @@ -13,7 +13,7 @@ import javax.inject.Singleton @Singleton class UserInfoRepositoryImpl @Inject constructor( - private val userInfoDataSource: UserInfoDataSource, private val appDataStore: AppDataStore + private val userInfoDataSource: UserInfoDataSource, private val appDataStore: AppDataStore, ) : UserInfoRepository { private val _myAccountInfo = MutableStateFlow(AccountState.Unknown) @@ -66,4 +66,4 @@ class UserInfoRepositoryImpl @Inject constructor( } } -} \ No newline at end of file +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/user/UserRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/user/UserRepository.kt similarity index 93% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/user/UserRepository.kt rename to core/data/src/main/java/com/android/mediproject/core/data/user/UserRepository.kt index f6e6edd36..2c6881027 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/user/UserRepository.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/user/UserRepository.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.data.remote.user +package com.android.mediproject.core.data.user import com.android.mediproject.core.model.requestparameters.ChangeNicknameParameter import com.android.mediproject.core.model.requestparameters.ChangePasswordParamter @@ -11,4 +11,4 @@ interface UserRepository { suspend fun changeNickname(changeNicknameParameter: ChangeNicknameParameter): Flow> suspend fun changePassword(changePasswordParamter: ChangePasswordParamter): Flow> suspend fun withdrawal(): Flow> -} \ No newline at end of file +} diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/user/UserRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/user/UserRepositoryImpl.kt similarity index 97% rename from core/data/src/main/java/com/android/mediproject/core/data/remote/user/UserRepositoryImpl.kt rename to core/data/src/main/java/com/android/mediproject/core/data/user/UserRepositoryImpl.kt index 48307841d..87b5b3428 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/user/UserRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/user/UserRepositoryImpl.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.data.remote.user +package com.android.mediproject.core.data.user import android.util.Log import com.android.mediproject.core.model.requestparameters.ChangeNicknameParameter diff --git a/core/database/src/main/java/com/android/mediproject/core/database/RoomDB.kt b/core/database/src/main/java/com/android/mediproject/core/database/RoomDB.kt index fbe08a7ae..7b2faf68d 100644 --- a/core/database/src/main/java/com/android/mediproject/core/database/RoomDB.kt +++ b/core/database/src/main/java/com/android/mediproject/core/database/RoomDB.kt @@ -11,7 +11,7 @@ import com.android.mediproject.core.database.searchhistory.SearchHistoryDao import com.android.mediproject.core.database.searchhistory.SearchHistoryDto -@Database(entities = [SearchHistoryDto::class, MedicineDetailCacheDto::class, MedicineImageCacheDto::class], version = 1, exportSchema = true) +@Database(entities = [SearchHistoryDto::class, MedicineDetailCacheDto::class, MedicineImageCacheDto::class], version = 1, exportSchema = false) @TypeConverters(RoomTypeConverter::class) abstract class RoomDB : RoomDatabase() { abstract fun searchHistoryDao(): SearchHistoryDao diff --git a/core/database/src/main/java/com/android/mediproject/core/database/cache/join/MedicineCacheJoinResult.kt b/core/database/src/main/java/com/android/mediproject/core/database/cache/join/MedicineCacheJoinResult.kt index 310c82436..faa44b383 100644 --- a/core/database/src/main/java/com/android/mediproject/core/database/cache/join/MedicineCacheJoinResult.kt +++ b/core/database/src/main/java/com/android/mediproject/core/database/cache/join/MedicineCacheJoinResult.kt @@ -9,6 +9,7 @@ data class MedicineCacheJoinResult( val itemSeq: String, @ColumnInfo(name = "data") val data: ByteArray, @ColumnInfo(name = "image_url") val imageUrl: String, + @ColumnInfo(name = "change_date") val changeDate: String, ) { override fun equals(other: Any?): Boolean { if (this === other) return true diff --git a/core/database/src/main/java/com/android/mediproject/core/database/searchhistory/SearchHistoryDao.kt b/core/database/src/main/java/com/android/mediproject/core/database/searchhistory/SearchHistoryDao.kt index 8f0dcfbf3..9353695d8 100644 --- a/core/database/src/main/java/com/android/mediproject/core/database/searchhistory/SearchHistoryDao.kt +++ b/core/database/src/main/java/com/android/mediproject/core/database/searchhistory/SearchHistoryDao.kt @@ -20,7 +20,7 @@ abstract class SearchHistoryDao { } @Insert(entity = SearchHistoryDto::class, onConflict = OnConflictStrategy.IGNORE) - abstract suspend fun realInsert(SearchHistoryDto: SearchHistoryDto) + abstract suspend fun realInsert(searchHistoryDto: SearchHistoryDto) /** * id에 해당하는 검색 기록을 삭제한다. diff --git a/core/database/src/main/java/com/android/mediproject/core/database/searchhistory/SearchHistoryMapper.kt b/core/database/src/main/java/com/android/mediproject/core/database/searchhistory/SearchHistoryMapper.kt index aeb0683b2..2d186014a 100644 --- a/core/database/src/main/java/com/android/mediproject/core/database/searchhistory/SearchHistoryMapper.kt +++ b/core/database/src/main/java/com/android/mediproject/core/database/searchhistory/SearchHistoryMapper.kt @@ -1,7 +1,9 @@ package com.android.mediproject.core.database.searchhistory -fun SearchHistoryDto.toSearchHistoryItemDto(): com.android.mediproject.core.model.search.local.SearchHistoryItemDto { - return com.android.mediproject.core.model.search.local.SearchHistoryItemDto( +import com.android.mediproject.core.model.search.SearchHistory + +fun SearchHistoryDto.toSearchHistoryItemDto(): SearchHistory { + return SearchHistory( id = id, query = query, searchedAt = searchDateTime, ) } diff --git a/core/datastore/src/main/java/com/android/mediproject/core/datastore/DataStoreModule.kt b/core/datastore/src/main/java/com/android/mediproject/core/datastore/DataStoreModule.kt index 5900ebdda..1c5332013 100644 --- a/core/datastore/src/main/java/com/android/mediproject/core/datastore/DataStoreModule.kt +++ b/core/datastore/src/main/java/com/android/mediproject/core/datastore/DataStoreModule.kt @@ -26,11 +26,13 @@ object DataStoreModule { @ApplicationContext context: Context, @Dispatcher(MediDispatchers.IO) ioDispatcher: CoroutineDispatcher, serializer: SavedTokenSerializer, - ): DataStore = DataStoreFactory.create( - serializer = serializer, - scope = CoroutineScope(ioDispatcher + SupervisorJob()), - ) { - context.dataStoreFile("saved_token.pb") + ): DataStore = synchronized(this) { + DataStoreFactory.create( + serializer = serializer, + scope = CoroutineScope(ioDispatcher + SupervisorJob()), + ) { + context.dataStoreFile("saved_token.pb") + } } @Provides diff --git a/core/domain/build.gradle.kts b/core/domain/build.gradle.kts index ee43d2c4d..b02ec3028 100644 --- a/core/domain/build.gradle.kts +++ b/core/domain/build.gradle.kts @@ -7,10 +7,13 @@ plugins { android { namespace = "com.android.mediproject.core.domain" + + hilt { + enableAggregatingTask = true + } + } -hilt { - enableAggregatingTask = true -} + dependencies { implementation(project(":core:common")) diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/CommentsUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/CommentsUseCase.kt index 0a2b2b29f..d9d74423a 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/CommentsUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/CommentsUseCase.kt @@ -2,10 +2,10 @@ package com.android.mediproject.core.domain import androidx.paging.PagingData import androidx.paging.flatMap -import com.android.mediproject.core.data.remote.comments.CommentsRepository -import com.android.mediproject.core.model.comments.CommentDto -import com.android.mediproject.core.model.comments.MyCommentDto -import com.android.mediproject.core.model.comments.toCommentDto +import com.android.mediproject.core.data.comments.CommentsRepository +import com.android.mediproject.core.model.comments.Comment +import com.android.mediproject.core.model.comments.MyComment +import com.android.mediproject.core.model.comments.toComment import com.android.mediproject.core.model.requestparameters.DeleteCommentParameter import com.android.mediproject.core.model.requestparameters.EditCommentParameter import com.android.mediproject.core.model.requestparameters.LikeCommentParameter @@ -31,17 +31,17 @@ class CommentsUseCase @Inject constructor( * * @param medicineId 약의 고유 번호 */ - fun getCommentsForAMedicine(medicineId: Long, myUserId: Long): Flow> = channelFlow { + fun getCommentsForAMedicine(medicineId: Long, myUserId: Long): Flow> = channelFlow { commentsRepository.getCommentsForAMedicine(medicineId).collectLatest { pagingData -> val result = pagingData.flatMap { (it.replies.map { reply -> - reply.toCommentDto().apply { + reply.toComment().apply { reply.likeList.forEach { like -> if (like.userId == myUserId) this.isLiked = true } } }.toList().reversed()) + listOf( - it.toCommentDto().apply { + it.toComment().apply { it.likeList.forEach { like -> if (like.userId == myUserId) this.isLiked = true } @@ -55,7 +55,7 @@ class CommentsUseCase @Inject constructor( /** * 내가 작성한 댓글을 가져오는 메서드입니다. */ - fun getMyComments(userId: Int): Flow> { + fun getMyComments(userId: Int): Flow> { TODO() } diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/GetAdminActionInfoUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/GetAdminActionInfoUseCase.kt index 2ba659139..c5bfcdb1a 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/GetAdminActionInfoUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/GetAdminActionInfoUseCase.kt @@ -2,9 +2,9 @@ package com.android.mediproject.core.domain import androidx.paging.PagingData import androidx.paging.map -import com.android.mediproject.core.data.remote.adminaction.AdminActionRepository -import com.android.mediproject.core.model.remote.adminaction.AdminActionListItemDto -import com.android.mediproject.core.model.remote.adminaction.toDto +import com.android.mediproject.core.data.adminaction.AdminActionRepository +import com.android.mediproject.core.model.adminaction.AdminAction +import com.android.mediproject.core.model.adminaction.toAdminAction import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import javax.inject.Inject @@ -14,13 +14,13 @@ class GetAdminActionInfoUseCase @Inject constructor( ) { suspend fun getAdminActionList( - ): Flow> = + ): Flow> = adminActionRepository.getAdminActionList().let { pager -> pager.map { pagingData -> pagingData.map { - it.toDto() + it.toAdminAction() } } } -} \ No newline at end of file +} diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/GetFavoriteMedicineUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/GetFavoriteMedicineUseCase.kt index 59aa0934b..c1da445be 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/GetFavoriteMedicineUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/GetFavoriteMedicineUseCase.kt @@ -1,9 +1,9 @@ package com.android.mediproject.core.domain -import com.android.mediproject.core.data.remote.favoritemedicine.FavoriteMedicineRepository +import com.android.mediproject.core.data.favoritemedicine.FavoriteMedicineRepository import com.android.mediproject.core.model.favoritemedicine.CheckFavoriteMedicineResponse -import com.android.mediproject.core.model.favoritemedicine.toFavoriteMedicineDto -import com.android.mediproject.core.model.favoritemedicine.toFavoriteMedicineMoreDto +import com.android.mediproject.core.model.favoritemedicine.toFavoriteMedicine +import com.android.mediproject.core.model.favoritemedicine.toFavoriteMedicineMoreInfo import com.android.mediproject.core.model.requestparameters.AddFavoriteMedicineParameter import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow @@ -16,7 +16,7 @@ class GetFavoriteMedicineUseCase @Inject constructor(private val favoriteMedicin suspend fun getFavoriteMedicineList() = channelFlow { favoriteMedicineRepository.getFavoriteMedicineList().map { result -> result.fold( - onSuccess = { it -> Result.success(it.map { it.toFavoriteMedicineDto() }) }, + onSuccess = { it -> Result.success(it.map { it.toFavoriteMedicine() }) }, onFailure = { Result.failure(it) }, ) }.collectLatest { trySend(it) } @@ -25,7 +25,7 @@ class GetFavoriteMedicineUseCase @Inject constructor(private val favoriteMedicin suspend fun getFavoriteMedicineMoreList() = channelFlow { favoriteMedicineRepository.getFavoriteMedicineList().map { result -> result.fold( - onSuccess = { it -> Result.success(it.map { it.toFavoriteMedicineMoreDto() }) }, + onSuccess = { it -> Result.success(it.map { it.toFavoriteMedicineMoreInfo() }) }, onFailure = { Result.failure(it) }, ) }.collectLatest { trySend(it) } diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/GetGranuleIdentificationUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/GetGranuleIdentificationUseCase.kt index 688bb7da5..8d58807dd 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/GetGranuleIdentificationUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/GetGranuleIdentificationUseCase.kt @@ -1,14 +1,15 @@ package com.android.mediproject.core.domain -import com.android.mediproject.core.data.remote.granule.GranuleIdentificationRepository -import com.android.mediproject.core.model.remote.granule.GranuleIdentificationInfoDto -import com.android.mediproject.core.model.remote.granule.toDto +import com.android.mediproject.core.data.granule.GranuleIdentificationRepository +import com.android.mediproject.core.model.granule.GranuleIdentificationInfo +import com.android.mediproject.core.model.granule.toGranuleIdentificationInfo import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import javax.inject.Inject class GetGranuleIdentificationUseCase @Inject constructor( - private val repository: GranuleIdentificationRepository) { + private val repository: GranuleIdentificationRepository, +) { /** @@ -19,12 +20,16 @@ class GetGranuleIdentificationUseCase @Inject constructor( * @param itemSeq 약품 고유 번호 */ operator fun invoke( - itemName: String?, entpName: String?, itemSeq: String?): Flow> = + itemName: String?, entpName: String?, itemSeq: String?, + ): Flow> = repository.getGranuleIdentificationInfo(itemName = itemName, entpName = entpName, itemSeq = itemSeq).map { result -> - result.fold(onSuccess = { response -> - Result.success(response.toDto()) - }, onFailure = { - Result.failure(it) - }) + result.fold( + onSuccess = { response -> + Result.success(response.toGranuleIdentificationInfo()) + }, + onFailure = { + Result.failure(it) + }, + ) } -} \ No newline at end of file +} diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/GetMedicineApprovalListUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/GetMedicineApprovalListUseCase.kt index 5c9d2c6e6..fd81a8858 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/GetMedicineApprovalListUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/GetMedicineApprovalListUseCase.kt @@ -1,7 +1,7 @@ package com.android.mediproject.core.domain import androidx.paging.map -import com.android.mediproject.core.data.remote.medicineapproval.MedicineApprovalRepository +import com.android.mediproject.core.data.medicineapproval.MedicineApprovalRepository import com.android.mediproject.core.model.constants.MedicationType import com.android.mediproject.core.model.medicine.medicineapproval.toApprovedMedicine import com.android.mediproject.core.model.requestparameters.ApprovalListSearchParameter @@ -15,7 +15,7 @@ class GetMedicineApprovalListUseCase @Inject constructor( /** * 약품 목록 조회 UseCase */ - operator fun invoke( + suspend operator fun invoke( parameter: ApprovalListSearchParameter, ) = medicineApprovalRepository.getMedicineApprovalList( itemName = parameter.itemName, diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/GetMedicineDetailsUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/GetMedicineDetailsUseCase.kt index 5295b19ec..f1c1dee29 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/GetMedicineDetailsUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/GetMedicineDetailsUseCase.kt @@ -1,9 +1,9 @@ package com.android.mediproject.core.domain -import com.android.mediproject.core.data.remote.medicineapproval.MedicineApprovalRepository -import com.android.mediproject.core.data.remote.medicineid.MedicineIdRepository +import com.android.mediproject.core.data.medicineapproval.MedicineApprovalRepository +import com.android.mediproject.core.data.medicineid.MedicineIdRepository import com.android.mediproject.core.database.cache.manager.MedicineDataCacheManager -import com.android.mediproject.core.model.local.navargs.MedicineInfoArgs +import com.android.mediproject.core.model.navargs.MedicineInfoArgs import com.android.mediproject.core.model.medicine.medicinedetailinfo.MedicineDetail import com.android.mediproject.core.model.medicine.medicinedetailinfo.cache.MedicineCacheEntity import com.android.mediproject.core.model.medicine.medicinedetailinfo.toMedicineDetail diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/GetRecallSuspensionInfoUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/GetRecallSuspensionInfoUseCase.kt index b6c9e3874..d11538c6a 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/GetRecallSuspensionInfoUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/GetRecallSuspensionInfoUseCase.kt @@ -2,10 +2,10 @@ package com.android.mediproject.core.domain import androidx.paging.PagingData import androidx.paging.map -import com.android.mediproject.core.data.remote.recallsuspension.RecallSuspensionRepository -import com.android.mediproject.core.model.remote.recall.DetailRecallSuspension -import com.android.mediproject.core.model.remote.recall.RecallSuspension -import com.android.mediproject.core.model.remote.recall.toRecallSuspension +import com.android.mediproject.core.data.recallsuspension.RecallSuspensionRepository +import com.android.mediproject.core.model.recall.DetailRecallSuspension +import com.android.mediproject.core.model.recall.RecallSuspension +import com.android.mediproject.core.model.recall.toRecallSuspension import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import javax.inject.Inject diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/GetSkippableIntroUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/GetSkippableIntroUseCase.kt index b2f70458a..957656add 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/GetSkippableIntroUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/GetSkippableIntroUseCase.kt @@ -6,7 +6,7 @@ import kotlinx.coroutines.flow.collectLatest import javax.inject.Inject class GetSkippableIntroUseCase @Inject constructor( - private val appDataStore: AppDataStore + private val appDataStore: AppDataStore, ) { suspend operator fun invoke() = callbackFlow { appDataStore.skipIntro.collectLatest { @@ -16,4 +16,4 @@ class GetSkippableIntroUseCase @Inject constructor( } suspend fun saveSkipIntro(skipIntro: Boolean) = appDataStore.saveSkipIntro(skipIntro) -} \ No newline at end of file +} diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/GetTokenUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/GetTokenUseCase.kt index 6f10de21d..de760b8f5 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/GetTokenUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/GetTokenUseCase.kt @@ -1,9 +1,9 @@ package com.android.mediproject.core.domain import android.util.Log -import com.android.mediproject.core.data.remote.token.TokenRepository -import com.android.mediproject.core.model.remote.token.CurrentTokens -import com.android.mediproject.core.model.remote.token.TokenState +import com.android.mediproject.core.data.token.TokenRepository +import com.android.mediproject.core.model.token.CurrentTokens +import com.android.mediproject.core.model.token.TokenState import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow import kotlinx.coroutines.flow.collectLatest diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/SearchHistoryUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/SearchHistoryUseCase.kt index ecde3650d..3abf9dab0 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/SearchHistoryUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/SearchHistoryUseCase.kt @@ -1,7 +1,6 @@ package com.android.mediproject.core.domain import com.android.mediproject.core.data.search.SearchHistoryRepository -import com.android.mediproject.core.database.searchhistory.SearchHistoryDto import com.android.mediproject.core.database.searchhistory.toSearchHistoryItemDto import kotlinx.coroutines.flow.mapLatest import javax.inject.Inject @@ -9,11 +8,8 @@ import javax.inject.Singleton @Singleton class SearchHistoryUseCase @Inject constructor( - private val searchHistoryRepository: SearchHistoryRepository + private val searchHistoryRepository: SearchHistoryRepository, ) { - suspend fun insertSearchHistory(query: String) = - searchHistoryRepository.insertSearchHistory(SearchHistoryDto(query)) - fun getSearchHistoryList(count: Int) = searchHistoryRepository.getSearchHistoryList(count).mapLatest { it.map { dto -> @@ -24,4 +20,4 @@ class SearchHistoryUseCase @Inject constructor( suspend fun deleteSearchHistory(id: Long) = searchHistoryRepository.deleteSearchHistory(id) suspend fun deleteAllSearchHistory() = searchHistoryRepository.deleteAllSearchHistory() -} \ No newline at end of file +} diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/sign/GetAccountStateUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/sign/GetAccountStateUseCase.kt index 9dbd5669a..ae0e084f6 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/sign/GetAccountStateUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/sign/GetAccountStateUseCase.kt @@ -1,6 +1,6 @@ package com.android.mediproject.core.domain.sign -import com.android.mediproject.core.data.remote.user.UserInfoRepository +import com.android.mediproject.core.data.user.UserInfoRepository import com.android.mediproject.core.model.user.AccountState import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow @@ -17,4 +17,4 @@ class GetAccountStateUseCase @Inject constructor(private val userInfoRepository: } suspend fun loadAccountState() = userInfoRepository.loadAccountState() -} \ No newline at end of file +} diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/sign/GetUserUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/sign/GetUserUseCase.kt index 9bcdbabf4..e730ece2d 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/sign/GetUserUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/sign/GetUserUseCase.kt @@ -2,17 +2,17 @@ package com.android.mediproject.core.domain.sign import android.util.Log import com.android.mediproject.core.datastore.AppDataStore -import com.android.mediproject.core.model.user.UserDto +import com.android.mediproject.core.model.user.User import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow import javax.inject.Inject class GetUserUseCase @Inject constructor(private val appDataStore: AppDataStore) { - suspend operator fun invoke(): Flow = channelFlow { + suspend operator fun invoke(): Flow = channelFlow { appDataStore.nickName.collect { nickName -> - Log.d("wap",nickName) - trySend(UserDto(nickName = nickName)) + Log.d("wap", nickName) + trySend(User(nickName = nickName)) } } -} \ No newline at end of file +} diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/sign/SignUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/sign/SignUseCase.kt index 76839d2b4..47d159846 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/sign/SignUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/sign/SignUseCase.kt @@ -1,7 +1,7 @@ package com.android.mediproject.core.domain.sign -import com.android.mediproject.core.data.remote.sign.SignRepository -import com.android.mediproject.core.data.remote.user.UserInfoRepository +import com.android.mediproject.core.data.sign.SignRepository +import com.android.mediproject.core.data.user.UserInfoRepository import com.android.mediproject.core.model.requestparameters.LoginParameter import com.android.mediproject.core.model.requestparameters.SignUpParameter import com.android.mediproject.core.model.user.AccountState @@ -13,7 +13,7 @@ import javax.inject.Singleton @Singleton class SignUseCase @Inject constructor( - private val signRepository: SignRepository, private val userInfoRepository: UserInfoRepository + private val signRepository: SignRepository, private val userInfoRepository: UserInfoRepository, ) { suspend fun login(loginParameter: LoginParameter): Flow> = signRepository.login(loginParameter) diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/user/UserUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/user/UserUseCase.kt index 49781ec56..2917e1aa2 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/user/UserUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/user/UserUseCase.kt @@ -1,14 +1,14 @@ package com.android.mediproject.core.domain.user import android.util.Log -import com.android.mediproject.core.data.remote.sign.SignRepository -import com.android.mediproject.core.data.remote.user.UserInfoRepository -import com.android.mediproject.core.data.remote.user.UserRepository +import com.android.mediproject.core.data.sign.SignRepository +import com.android.mediproject.core.data.user.UserInfoRepository +import com.android.mediproject.core.data.user.UserRepository import com.android.mediproject.core.datastore.AppDataStore import com.android.mediproject.core.model.requestparameters.ChangeNicknameParameter import com.android.mediproject.core.model.requestparameters.ChangePasswordParamter import com.android.mediproject.core.model.user.AccountState -import com.android.mediproject.core.model.user.UserDto +import com.android.mediproject.core.model.user.User import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow import kotlinx.coroutines.flow.collectLatest @@ -22,9 +22,9 @@ class UserUseCase @Inject constructor( private val getUserInfoRepository: UserInfoRepository, private val signRepository: SignRepository, ) { - suspend operator fun invoke(): Flow = channelFlow { + suspend operator fun invoke(): Flow = channelFlow { appDataStore.nickName.collect { nickName -> - trySend(UserDto(nickName = nickName)) + trySend(User(nickName = nickName)) } } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/DataState.kt b/core/model/src/main/java/com/android/mediproject/core/model/DataState.kt index 0a14964e1..7b3a2e818 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/DataState.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/DataState.kt @@ -7,8 +7,24 @@ package com.android.mediproject.core.model * @see DataState.Success * @see DataState.Error */ -sealed class DataState { - object Empty : DataState() - data class Success(val data: R) : DataState() - data class Error(val message: String) : DataState() -} \ No newline at end of file +sealed interface DataState { + object Empty : DataState + data class Success(val data: R) : DataState + data class Error(val message: String) : DataState +} + + +fun DataState.isEmpty(block: () -> Unit): DataState { + if (this is DataState.Empty) block() + return this +} + +fun DataState.isSuccess(block: (T) -> Unit): DataState { + if (this is DataState.Success) block(data) + return this +} + +fun DataState.isError(block: (String) -> Unit): DataState { + if (this is DataState.Error) block(message) + return this +} diff --git a/core/model/src/main/java/com/android/mediproject/core/DateTime.kt b/core/model/src/main/java/com/android/mediproject/core/model/DateTime.kt similarity index 89% rename from core/model/src/main/java/com/android/mediproject/core/DateTime.kt rename to core/model/src/main/java/com/android/mediproject/core/model/DateTime.kt index d5932ba9b..226f17556 100644 --- a/core/model/src/main/java/com/android/mediproject/core/DateTime.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/DateTime.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core +package com.android.mediproject.core.model import java.time.LocalDate import java.time.LocalDateTime diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListItemDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/adminaction/AdminAction.kt similarity index 91% rename from core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListItemDto.kt rename to core/model/src/main/java/com/android/mediproject/core/model/adminaction/AdminAction.kt index 6df9e630f..45bd30870 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListItemDto.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/adminaction/AdminAction.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.remote.adminaction +package com.android.mediproject.core.model.adminaction import android.os.Parcelable @@ -24,7 +24,7 @@ import java.time.format.DateTimeFormatter * @property violation 위반 내용 * */ -data class AdminActionListItemDto( +data class AdminAction( val address: String, // 경기도 화성시 향남읍 제약공단3길27 val disposition: String, // ○ 의약품 ‘아빌리파이정2밀리그램(아리피프라졸)’<제28호>에 대하여 해당 품목 제조업무정지 1개월(2023. 5. 12.~2023. 6. 11.) val enforcementNumber: String, // 2023003342 @@ -40,9 +40,9 @@ data class AdminActionListItemDto( var onClick: (() -> Unit)? = null, ) : Parcelable -fun AdminActionListResponse.Item.toDto(): AdminActionListItemDto { - return AdminActionListItemDto( - address = aDDR, +fun AdminActionListResponse.Item.toAdminAction(): AdminAction { + return AdminAction( + address = address, disposition = aDMDISPSNAME, enforcementNumber = aDMDISPSSEQ, applyLaw = bEFAPPLYLAW, diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/adminaction/AdminActionListResponse.kt similarity index 92% rename from core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/adminaction/AdminActionListResponse.kt index 75bdd1135..edc1f3092 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/adminaction/AdminActionListResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/adminaction/AdminActionListResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.remote.adminaction +package com.android.mediproject.core.model.adminaction import com.android.mediproject.core.model.DataGoKrResponse @@ -17,7 +17,7 @@ class AdminActionListResponse : DataGoKrResponse() /** * 행정처분 목록 별 데이터 클래스 * - * @property aDDR 소재지 + * @property address 소재지 * @property aDMDISPSNAME 처분사항 * @property aDMDISPSSEQ 행정처분 일련번호 * @property bEFAPPLYLAW 근거법령 @@ -33,7 +33,7 @@ class AdminActionListResponse : DataGoKrResponse() */ @Serializable data class Item( - @SerialName("ADDR") val aDDR: String, // 경기도 화성시 향남읍 제약공단3길27 + @SerialName("ADDR") val address: String, // 경기도 화성시 향남읍 제약공단3길27 @SerialName("ADM_DISPS_NAME") val aDMDISPSNAME: String, // ○ 의약품 ‘아빌리파이정2밀리그램(아리피프라졸)’<제28호>에 대하여 해당 품목 제조업무정지 1개월(2023. 5. 12.~2023. 6. 11.) @SerialName("ADM_DISPS_SEQ") val aDMDISPSSEQ: String, // 2023003342 @SerialName("BEF_APPLY_LAW") diff --git a/core/model/src/main/java/com/android/mediproject/core/model/comments/CommentDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/comments/Comment.kt similarity index 91% rename from core/model/src/main/java/com/android/mediproject/core/model/comments/CommentDto.kt rename to core/model/src/main/java/com/android/mediproject/core/model/comments/Comment.kt index 3c46fda4a..eeb7d5957 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/comments/CommentDto.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/comments/Comment.kt @@ -23,7 +23,7 @@ import java.time.format.DateTimeFormatter * @property onClickEdit 답글 수정 버튼 클릭 시 실행되는 람다 함수 * @property isMine 내가 쓴 댓글인지 여부 */ -data class CommentDto( +data class Comment( val commentId: Long, val userId: Long, val userName: String, @@ -35,8 +35,8 @@ data class CommentDto( var onClickReply: ((String, Long) -> Unit)?, var onClickLike: ((Long, Boolean) -> Unit)?, var onClickDelete: ((Long) -> Unit)?, - var onClickEdit: ((CommentDto, Int) -> Unit)?, - var onClickApplyEdited: ((CommentDto) -> Unit)?, + var onClickEdit: ((Comment, Int) -> Unit)?, + var onClickApplyEdited: ((Comment) -> Unit)?, var isMine: Boolean = false, ) { @@ -55,7 +55,7 @@ CREATED_AT DATETIME 작성 시각 UPDATED_AT DATETIME 수정 시각 */ -fun CommentListResponse.Comment.toCommentDto() = CommentDto( +fun CommentListResponse.Comment.toComment() = Comment( commentId = id, userId = userId, userName = nickName, @@ -71,7 +71,7 @@ fun CommentListResponse.Comment.toCommentDto() = CommentDto( onClickApplyEdited = null, ) -fun CommentListResponse.Comment.Reply.toCommentDto() = CommentDto( +fun CommentListResponse.Comment.Reply.toComment() = Comment( commentId = id, userId = userId, userName = nickName, diff --git a/core/model/src/main/java/com/android/mediproject/core/model/comments/CommentChangedResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/comments/CommentChangedResponse.kt index 1e4479c1e..82b16672a 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/comments/CommentChangedResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/comments/CommentChangedResponse.kt @@ -1,6 +1,6 @@ package com.android.mediproject.core.model.comments -import com.android.mediproject.core.model.awscommon.BaseAwsQueryResponse +import com.android.mediproject.core.model.servercommon.ServerQueryResponse import kotlinx.serialization.Serializable /** @@ -9,4 +9,4 @@ import kotlinx.serialization.Serializable @Serializable data class CommentChangedResponse( val commentId: Long = 0L, -) : BaseAwsQueryResponse() \ No newline at end of file +) : ServerQueryResponse() diff --git a/core/model/src/main/java/com/android/mediproject/core/model/comments/CommentListResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/comments/CommentListResponse.kt index eb293a6ad..e2152dea8 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/comments/CommentListResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/comments/CommentListResponse.kt @@ -1,14 +1,14 @@ package com.android.mediproject.core.model.comments -import com.android.mediproject.core.model.awscommon.BaseAwsQueryResponse +import com.android.mediproject.core.model.servercommon.ServerQueryResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class CommentListResponse( - @SerialName("commentList") val commentList: List -) : BaseAwsQueryResponse() { + @SerialName("commentList") val commentList: List, +) : ServerQueryResponse() { @Serializable data class Comment( @@ -21,7 +21,7 @@ data class CommentListResponse( @SerialName("USERID") val userId: Long, // 2 @SerialName("likeList") val likeList: List, @SerialName("nickname") val nickName: String, - @SerialName("updatedAt") val updatedAt: String + @SerialName("updatedAt") val updatedAt: String, ) { @Serializable data class Reply( @@ -31,7 +31,7 @@ data class CommentListResponse( @SerialName("likeList") val likeList: List, @SerialName("MEDICINEID") val medicineId: Long, // 41 @SerialName("SUBORDINATION") val subordination: Long, // 2 @SerialName("USERID") val userId: Long, // 3 - @SerialName("nickname") val nickName: String, @SerialName("updatedAt") val updatedAt: String + @SerialName("nickname") val nickName: String, @SerialName("updatedAt") val updatedAt: String, ) } } @@ -40,5 +40,5 @@ data class CommentListResponse( data class Like( @SerialName("COMMENTID") val commentId: Long, // 2 @SerialName("ID") val id: Long, // 1 - @SerialName("USERID") val userId: Long -) \ No newline at end of file + @SerialName("USERID") val userId: Long, +) diff --git a/core/model/src/main/java/com/android/mediproject/core/model/comments/EditedCommentDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/comments/EditedComment.kt similarity index 89% rename from core/model/src/main/java/com/android/mediproject/core/model/comments/EditedCommentDto.kt rename to core/model/src/main/java/com/android/mediproject/core/model/comments/EditedComment.kt index 56893d873..700eefdc6 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/comments/EditedCommentDto.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/comments/EditedComment.kt @@ -6,7 +6,7 @@ package com.android.mediproject.core.model.comments * @property commentId 댓글 id * @property content 댓글 내용 */ -data class EditedCommentDto( +data class EditedComment( val commentId: Int, val content: String, -) \ No newline at end of file +) diff --git a/core/model/src/main/java/com/android/mediproject/core/model/comments/LikeResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/comments/LikeResponse.kt index e48daaf89..952c23894 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/comments/LikeResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/comments/LikeResponse.kt @@ -1,6 +1,6 @@ package com.android.mediproject.core.model.comments -import com.android.mediproject.core.model.awscommon.BaseAwsQueryResponse +import com.android.mediproject.core.model.servercommon.ServerQueryResponse import kotlinx.serialization.Serializable /** @@ -9,4 +9,4 @@ import kotlinx.serialization.Serializable @Serializable data class LikeResponse( val likeId: Long = 0L, -) : BaseAwsQueryResponse() \ No newline at end of file +) : ServerQueryResponse() diff --git a/core/model/src/main/java/com/android/mediproject/core/model/comments/MyCommentDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/comments/MyComment.kt similarity index 83% rename from core/model/src/main/java/com/android/mediproject/core/model/comments/MyCommentDto.kt rename to core/model/src/main/java/com/android/mediproject/core/model/comments/MyComment.kt index fd7057a5e..6bca44671 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/comments/MyCommentDto.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/comments/MyComment.kt @@ -10,11 +10,11 @@ package com.android.mediproject.core.model.comments * @property createdAt 작성 시각 */ -data class MyCommentDto( +data class MyComment( val commentId: Int, val medicineName: String, val content: String, val createdAt: String, val replyCount: Int, - var onClick: ((MyCommentDto) -> Unit)? = null, + var onClick: ((MyComment) -> Unit)? = null, ) diff --git a/core/model/src/main/java/com/android/mediproject/core/model/comments/NewCommentDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/comments/NewComment.kt similarity index 93% rename from core/model/src/main/java/com/android/mediproject/core/model/comments/NewCommentDto.kt rename to core/model/src/main/java/com/android/mediproject/core/model/comments/NewComment.kt index beae3d01a..5a1085b7e 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/comments/NewCommentDto.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/comments/NewComment.kt @@ -8,9 +8,9 @@ package com.android.mediproject.core.model.comments * @property content 댓글 내용 * @property subordinationId 댓글 종속성 */ -data class NewCommentDto( +data class NewComment( val medicineId: String, val userId: Int, val content: String, val subordinationId: Int = -1, -) \ No newline at end of file +) diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/DurType.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/DurType.kt similarity index 88% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/DurType.kt rename to core/model/src/main/java/com/android/mediproject/core/model/dur/DurType.kt index 2067f0f1e..bdb9bce42 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/DurType.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/DurType.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.datagokr +package com.android.mediproject.core.model.dur enum class DurType(val type: String) { CAPACITY_ATTENTION("용량주의"), DOSING_CAUTION("투여기간주의"), EFFICACY_GROUP_DUPLICATION("효능군중복"), EX_RELEASE_TABLET_SPLIT_ATTENTION("서방정분할주의"), diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/capacity/DurIngrCapacityAttentionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/capacity/DurIngrCapacityAttentionResponse.kt similarity index 97% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/capacity/DurIngrCapacityAttentionResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/capacity/DurIngrCapacityAttentionResponse.kt index f89ebe019..a9b6398b6 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/capacity/DurIngrCapacityAttentionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/capacity/DurIngrCapacityAttentionResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.datagokr.duringr.capacity +package com.android.mediproject.core.model.dur.duringr.capacity import com.android.mediproject.core.model.DataGoKrResponse diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/combination/DurIngrCombinationTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/combination/DurIngrCombinationTabooResponse.kt similarity index 97% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/combination/DurIngrCombinationTabooResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/combination/DurIngrCombinationTabooResponse.kt index f4f03a7a7..d8f8d55f8 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/combination/DurIngrCombinationTabooResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/combination/DurIngrCombinationTabooResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.datagokr.duringr.combination +package com.android.mediproject.core.model.dur.duringr.combination import com.android.mediproject.core.model.DataGoKrResponse diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/dosing/DurIngrDosingCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/dosing/DurIngrDosingCautionResponse.kt similarity index 97% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/dosing/DurIngrDosingCautionResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/dosing/DurIngrDosingCautionResponse.kt index f8aaa7abd..ea2e8d430 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/dosing/DurIngrDosingCautionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/dosing/DurIngrDosingCautionResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.datagokr.duringr.dosing +package com.android.mediproject.core.model.dur.duringr.dosing import com.android.mediproject.core.model.DataGoKrResponse diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/efficacygroupduplication/DurIngrEfficacyGroupDuplicationResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/efficacygroupduplication/DurIngrEfficacyGroupDuplicationResponse.kt similarity index 96% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/efficacygroupduplication/DurIngrEfficacyGroupDuplicationResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/efficacygroupduplication/DurIngrEfficacyGroupDuplicationResponse.kt index 015a6ef76..d58e665ed 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/efficacygroupduplication/DurIngrEfficacyGroupDuplicationResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/efficacygroupduplication/DurIngrEfficacyGroupDuplicationResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.datagokr.duringr.efficacygroupduplication +package com.android.mediproject.core.model.dur.duringr.efficacygroupduplication import com.android.mediproject.core.model.DataGoKrResponse diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/pregnancy/DurIngrPregnantWomanTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/pregnancy/DurIngrPregnantWomanTabooResponse.kt similarity index 97% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/pregnancy/DurIngrPregnantWomanTabooResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/pregnancy/DurIngrPregnantWomanTabooResponse.kt index 3f2dc5ead..a9559a7d9 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/pregnancy/DurIngrPregnantWomanTabooResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/pregnancy/DurIngrPregnantWomanTabooResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.datagokr.duringr.pregnancy +package com.android.mediproject.core.model.dur.duringr.pregnancy import com.android.mediproject.core.model.DataGoKrResponse diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/DurIngrSeniorCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/senior/DurIngrSeniorCautionResponse.kt similarity index 97% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/DurIngrSeniorCautionResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/senior/DurIngrSeniorCautionResponse.kt index 6f14b15d5..7f0057952 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/senior/DurIngrSeniorCautionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/senior/DurIngrSeniorCautionResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.datagokr.duringr.senior +package com.android.mediproject.core.model.dur.duringr.senior import com.android.mediproject.core.model.DataGoKrResponse diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/specialtyagegroup/DurIngrSpecialtyAgeGroupTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/specialtyagegroup/DurIngrSpecialtyAgeGroupTabooResponse.kt similarity index 96% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/specialtyagegroup/DurIngrSpecialtyAgeGroupTabooResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/specialtyagegroup/DurIngrSpecialtyAgeGroupTabooResponse.kt index 021c3084c..9ab596795 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/duringr/specialtyagegroup/DurIngrSpecialtyAgeGroupTabooResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/specialtyagegroup/DurIngrSpecialtyAgeGroupTabooResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.datagokr.duringr.specialtyagegroup +package com.android.mediproject.core.model.dur.duringr.specialtyagegroup import com.android.mediproject.core.model.DataGoKrResponse diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/capacity/DurProductCapacityAttentionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/capacity/DurProductCapacityAttentionResponse.kt similarity index 97% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/capacity/DurProductCapacityAttentionResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/capacity/DurProductCapacityAttentionResponse.kt index 04d74445a..d15ca6356 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/capacity/DurProductCapacityAttentionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/capacity/DurProductCapacityAttentionResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.datagokr.durproduct.capacity +package com.android.mediproject.core.model.dur.durproduct.capacity import com.android.mediproject.core.model.DataGoKrResponse diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/combination/DurProductCombinationTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/combination/DurProductCombinationTabooResponse.kt similarity index 98% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/combination/DurProductCombinationTabooResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/combination/DurProductCombinationTabooResponse.kt index feba66ba2..d9f7cffa8 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/combination/DurProductCombinationTabooResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/combination/DurProductCombinationTabooResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.datagokr.durproduct.combination +package com.android.mediproject.core.model.dur.durproduct.combination import com.android.mediproject.core.model.DataGoKrResponse diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/dosing/DurProductDosingCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/dosing/DurProductDosingCautionResponse.kt similarity index 97% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/dosing/DurProductDosingCautionResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/dosing/DurProductDosingCautionResponse.kt index 3d2e09a08..de288ba98 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/dosing/DurProductDosingCautionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/dosing/DurProductDosingCautionResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.datagokr.durproduct.dosing +package com.android.mediproject.core.model.dur.durproduct.dosing import com.android.mediproject.core.model.DataGoKrResponse diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplicationResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplicationResponse.kt similarity index 97% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplicationResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplicationResponse.kt index 1335781fa..98be5ef99 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplicationResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplicationResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.datagokr.durproduct.efficacygroupduplication +package com.android.mediproject.core.model.dur.durproduct.efficacygroupduplication import com.android.mediproject.core.model.DataGoKrResponse diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt similarity index 96% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt index 28997ff21..c844507c1 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.datagokr.durproduct.extendedreleasetablet +package com.android.mediproject.core.model.dur.durproduct.extendedreleasetablet import com.android.mediproject.core.model.DataGoKrResponse diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/pregnancy/DurProductPregnantWomanTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/pregnancy/DurProductPregnantWomanTabooResponse.kt similarity index 97% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/pregnancy/DurProductPregnantWomanTabooResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/pregnancy/DurProductPregnantWomanTabooResponse.kt index 920f7a13b..ec4cdf14c 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/pregnancy/DurProductPregnantWomanTabooResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/pregnancy/DurProductPregnantWomanTabooResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.datagokr.durproduct.pregnancy +package com.android.mediproject.core.model.dur.durproduct.pregnancy import com.android.mediproject.core.model.DataGoKrResponse diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/productlist/DurProductListResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/productlist/DurProductListResponse.kt similarity index 97% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/productlist/DurProductListResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/productlist/DurProductListResponse.kt index a38506fe0..6eb0a3c46 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/productlist/DurProductListResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/productlist/DurProductListResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.datagokr.durproduct.productlist +package com.android.mediproject.core.model.dur.durproduct.productlist import com.android.mediproject.core.model.DataGoKrResponse diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductSeniorCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/senior/DurProductSeniorCautionResponse.kt similarity index 97% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductSeniorCautionResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/senior/DurProductSeniorCautionResponse.kt index 2a3667bef..22b61013f 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/senior/DurProductSeniorCautionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/senior/DurProductSeniorCautionResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.datagokr.durproduct.senior +package com.android.mediproject.core.model.dur.durproduct.senior import com.android.mediproject.core.model.DataGoKrResponse diff --git a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTabooResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTabooResponse.kt similarity index 97% rename from core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTabooResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTabooResponse.kt index a65c0dcce..9eacbd26f 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/datagokr/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTabooResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTabooResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.datagokr.durproduct.specialtyagegroup +package com.android.mediproject.core.model.dur.durproduct.specialtyagegroup import com.android.mediproject.core.model.DataGoKrResponse diff --git a/core/model/src/main/java/com/android/mediproject/core/model/favoritemedicine/FavoriteMedicine.kt b/core/model/src/main/java/com/android/mediproject/core/model/favoritemedicine/FavoriteMedicine.kt new file mode 100644 index 000000000..f00f093dd --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/favoritemedicine/FavoriteMedicine.kt @@ -0,0 +1,10 @@ +package com.android.mediproject.core.model.favoritemedicine + + +data class FavoriteMedicine( + val itemSeq: String, + val medicineName: String +) + +fun FavoriteMedicineListResponse.Medicine.toFavoriteMedicine() = + FavoriteMedicine(itemSeq = itemSeq, medicineName = itemName) diff --git a/core/model/src/main/java/com/android/mediproject/core/model/favoritemedicine/FavoriteMedicineDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/favoritemedicine/FavoriteMedicineDto.kt deleted file mode 100644 index eb7b7b24c..000000000 --- a/core/model/src/main/java/com/android/mediproject/core/model/favoritemedicine/FavoriteMedicineDto.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.android.mediproject.core.model.favoritemedicine - - -data class FavoriteMedicineDto( - val itemSeq: String, - val medicineName: String -) - -fun FavoriteMedicineListResponse.Medicine.toFavoriteMedicineDto() = - FavoriteMedicineDto(itemSeq = itemSeq, medicineName = itemName) diff --git a/core/model/src/main/java/com/android/mediproject/core/model/favoritemedicine/FavoriteMedicineListResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/favoritemedicine/FavoriteMedicineListResponse.kt index 632bc2cea..096090026 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/favoritemedicine/FavoriteMedicineListResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/favoritemedicine/FavoriteMedicineListResponse.kt @@ -1,13 +1,13 @@ package com.android.mediproject.core.model.favoritemedicine -import com.android.mediproject.core.model.awscommon.BaseAwsQueryResponse +import com.android.mediproject.core.model.servercommon.ServerQueryResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class FavoriteMedicineListResponse( - val medicineList: List -) : BaseAwsQueryResponse() { + val medicineList: List, +) : ServerQueryResponse() { @Serializable data class Medicine( @SerialName("ENTP_NAME") @@ -23,6 +23,6 @@ data class FavoriteMedicineListResponse( @SerialName("PRDUCT_TYPE") val prductType: String, @SerialName("SPCLTY_PBLC") - val spcltyPblc: String + val spcltyPblc: String, ) -} \ No newline at end of file +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/favoritemedicine/FavoriteMedicineMoreDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/favoritemedicine/FavoriteMedicineMoreInfo.kt similarity index 70% rename from core/model/src/main/java/com/android/mediproject/core/model/favoritemedicine/FavoriteMedicineMoreDto.kt rename to core/model/src/main/java/com/android/mediproject/core/model/favoritemedicine/FavoriteMedicineMoreInfo.kt index 77e87bf8f..5cea20365 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/favoritemedicine/FavoriteMedicineMoreDto.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/favoritemedicine/FavoriteMedicineMoreInfo.kt @@ -1,18 +1,18 @@ package com.android.mediproject.core.model.favoritemedicine -data class FavoriteMedicineMoreDto( +data class FavoriteMedicineMoreInfo( val id: Int, val itemName: String, val entpName: String, val itemIngrName: String, - val spcltyPblc: String + val spcltyPblc: String, ) -fun FavoriteMedicineListResponse.Medicine.toFavoriteMedicineMoreDto() = - FavoriteMedicineMoreDto( +fun FavoriteMedicineListResponse.Medicine.toFavoriteMedicineMoreInfo() = + FavoriteMedicineMoreInfo( id = id, itemName = itemName, entpName = entpName, itemIngrName = itemIngrName, - spcltyPblc = spcltyPblc - ) \ No newline at end of file + spcltyPblc = spcltyPblc, + ) diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/granule/GranuleIdentificationInfoDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/granule/GranuleIdentificationInfo.kt similarity index 93% rename from core/model/src/main/java/com/android/mediproject/core/model/remote/granule/GranuleIdentificationInfoDto.kt rename to core/model/src/main/java/com/android/mediproject/core/model/granule/GranuleIdentificationInfo.kt index 7787a448d..93502babc 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/granule/GranuleIdentificationInfoDto.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/granule/GranuleIdentificationInfo.kt @@ -1,6 +1,6 @@ -package com.android.mediproject.core.model.remote.granule +package com.android.mediproject.core.model.granule -import com.android.mediproject.core.toLocalDate +import com.android.mediproject.core.model.toLocalDate import java.time.LocalDate @@ -41,7 +41,7 @@ import java.time.LocalDate * @param thick 의약품 두께 * */ -data class GranuleIdentificationInfoDto( +data class GranuleIdentificationInfo( val bizrNo: String, // 3038117108 val changeDate: LocalDate?, // 20230419 val chart: String, // 무색 내지 연보라색의 내용물이 든 보라색의 투명한 타원형 연질캡슐 @@ -72,7 +72,7 @@ data class GranuleIdentificationInfoDto( val thick: String?, // 7.58 ) -fun GranuleIdentificationInfoResponse.Item.toDto() = GranuleIdentificationInfoDto( +fun GranuleIdentificationInfoResponse.Item.toGranuleIdentificationInfo() = GranuleIdentificationInfo( bizrNo = bizrNo, changeDate = changeDate.toLocalDate("yyyyMMdd"), chart = chart, diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/granule/GranuleIdentificationInfoResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/granule/GranuleIdentificationInfoResponse.kt similarity index 98% rename from core/model/src/main/java/com/android/mediproject/core/model/remote/granule/GranuleIdentificationInfoResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/granule/GranuleIdentificationInfoResponse.kt index d62d0ce80..80ae97879 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/granule/GranuleIdentificationInfoResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/granule/GranuleIdentificationInfoResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.remote.granule +package com.android.mediproject.core.model.granule import com.android.mediproject.core.model.DataGoKrResponse diff --git a/core/model/src/main/java/com/android/mediproject/core/model/local/navargs/RecallDisposalArgs.kt b/core/model/src/main/java/com/android/mediproject/core/model/local/navargs/RecallDisposalArgs.kt deleted file mode 100644 index 552245209..000000000 --- a/core/model/src/main/java/com/android/mediproject/core/model/local/navargs/RecallDisposalArgs.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.android.mediproject.core.model.local.navargs - -data class RecallDisposalArgs( - val product: String, -) : BaseNavArgs(RecallDisposalArgs::class.java.name) \ No newline at end of file diff --git a/core/model/src/main/java/com/android/mediproject/core/model/medicine/MedicineIdResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/medicine/MedicineIdResponse.kt index 717d7e506..7570d055d 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/medicine/MedicineIdResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/medicine/MedicineIdResponse.kt @@ -1,10 +1,10 @@ package com.android.mediproject.core.model.medicine -import com.android.mediproject.core.model.awscommon.BaseAwsQueryResponse +import com.android.mediproject.core.model.servercommon.ServerQueryResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class MedicineIdResponse( @SerialName("medicineId") val medicineId: Long, -) : BaseAwsQueryResponse() \ No newline at end of file +) : ServerQueryResponse() diff --git a/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetail.kt b/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetail.kt index bf1a9b44f..fcc154d31 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetail.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetail.kt @@ -2,7 +2,7 @@ package com.android.mediproject.core.model.medicine.medicinedetailinfo import com.android.mediproject.core.model.util.XMLParsedResult import com.android.mediproject.core.model.util.parseXmlString -import com.android.mediproject.core.toLocalDate +import com.android.mediproject.core.model.toLocalDate import java.time.LocalDate /** diff --git a/core/model/src/main/java/com/android/mediproject/core/model/local/navargs/BaseNavArgs.kt b/core/model/src/main/java/com/android/mediproject/core/model/navargs/BaseNavArgs.kt similarity index 99% rename from core/model/src/main/java/com/android/mediproject/core/model/local/navargs/BaseNavArgs.kt rename to core/model/src/main/java/com/android/mediproject/core/model/navargs/BaseNavArgs.kt index ba8b4db46..b769a0f55 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/local/navargs/BaseNavArgs.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/navargs/BaseNavArgs.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.local.navargs +package com.android.mediproject.core.model.navargs import android.os.Bundle import androidx.core.os.bundleOf diff --git a/core/model/src/main/java/com/android/mediproject/core/model/local/navargs/LoginFromMyPageArgs.kt b/core/model/src/main/java/com/android/mediproject/core/model/navargs/LoginFromMyPageArgs.kt similarity index 73% rename from core/model/src/main/java/com/android/mediproject/core/model/local/navargs/LoginFromMyPageArgs.kt rename to core/model/src/main/java/com/android/mediproject/core/model/navargs/LoginFromMyPageArgs.kt index 94e07e0fd..9db0d695b 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/local/navargs/LoginFromMyPageArgs.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/navargs/LoginFromMyPageArgs.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.local.navargs +package com.android.mediproject.core.model.navargs const val TOHOME = 201 const val TOMYPAGE = 202 diff --git a/core/model/src/main/java/com/android/mediproject/core/model/local/navargs/MedicineBasicInfoArgs.kt b/core/model/src/main/java/com/android/mediproject/core/model/navargs/MedicineBasicInfoArgs.kt similarity index 66% rename from core/model/src/main/java/com/android/mediproject/core/model/local/navargs/MedicineBasicInfoArgs.kt rename to core/model/src/main/java/com/android/mediproject/core/model/navargs/MedicineBasicInfoArgs.kt index 1642c2a24..6f17fed9b 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/local/navargs/MedicineBasicInfoArgs.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/navargs/MedicineBasicInfoArgs.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.local.navargs +package com.android.mediproject.core.model.navargs /** * 댓글 화면으로 전달할 인자 @@ -6,4 +6,4 @@ package com.android.mediproject.core.model.local.navargs * @property itemSeq 약 품목기준코드 */ data class MedicineBasicInfoArgs( - val itemSeq: Long, val medicineIdInAws: Long) : BaseNavArgs(MedicineBasicInfoArgs::class.java.name) \ No newline at end of file + val itemSeq: Long, val medicineIdInAws: Long) : BaseNavArgs(MedicineBasicInfoArgs::class.java.name) diff --git a/core/model/src/main/java/com/android/mediproject/core/model/local/navargs/MedicineInfoArgs.kt b/core/model/src/main/java/com/android/mediproject/core/model/navargs/MedicineInfoArgs.kt similarity index 95% rename from core/model/src/main/java/com/android/mediproject/core/model/local/navargs/MedicineInfoArgs.kt rename to core/model/src/main/java/com/android/mediproject/core/model/navargs/MedicineInfoArgs.kt index 9c1764514..a77938659 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/local/navargs/MedicineInfoArgs.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/navargs/MedicineInfoArgs.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.local.navargs +package com.android.mediproject.core.model.navargs import android.os.Parcelable import kotlinx.parcelize.Parcelize diff --git a/core/model/src/main/java/com/android/mediproject/core/model/navargs/RecallDisposalArgs.kt b/core/model/src/main/java/com/android/mediproject/core/model/navargs/RecallDisposalArgs.kt new file mode 100644 index 000000000..86c198d9a --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/navargs/RecallDisposalArgs.kt @@ -0,0 +1,5 @@ +package com.android.mediproject.core.model.navargs + +data class RecallDisposalArgs( + val product: String, +) : BaseNavArgs(RecallDisposalArgs::class.java.name) diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspension.kt b/core/model/src/main/java/com/android/mediproject/core/model/recall/DetailRecallSuspension.kt similarity index 97% rename from core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspension.kt rename to core/model/src/main/java/com/android/mediproject/core/model/recall/DetailRecallSuspension.kt index 3440fa659..b1a811318 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspension.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/recall/DetailRecallSuspension.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.remote.recall +package com.android.mediproject.core.model.recall import java.time.LocalDate import java.time.format.DateTimeFormatter diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspensionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/recall/DetailRecallSuspensionResponse.kt similarity index 97% rename from core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspensionResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/recall/DetailRecallSuspensionResponse.kt index 3c2f747db..7b44f6e53 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/DetailRecallSuspensionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/recall/DetailRecallSuspensionResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.remote.recall +package com.android.mediproject.core.model.recall import com.android.mediproject.core.model.DataGoKrResponse diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/RecallSuspension.kt b/core/model/src/main/java/com/android/mediproject/core/model/recall/RecallSuspension.kt similarity index 92% rename from core/model/src/main/java/com/android/mediproject/core/model/remote/recall/RecallSuspension.kt rename to core/model/src/main/java/com/android/mediproject/core/model/recall/RecallSuspension.kt index f4d8f31da..db5a2d142 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/RecallSuspension.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/recall/RecallSuspension.kt @@ -1,7 +1,7 @@ -package com.android.mediproject.core.model.remote.recall +package com.android.mediproject.core.model.recall -import com.android.mediproject.core.toLocalDate +import com.android.mediproject.core.model.toLocalDate import java.time.LocalDate diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/RecallSuspensionListResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/recall/RecallSuspensionListResponse.kt similarity index 96% rename from core/model/src/main/java/com/android/mediproject/core/model/remote/recall/RecallSuspensionListResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/recall/RecallSuspensionListResponse.kt index 6b4fdadb6..aaa85fc5c 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/recall/RecallSuspensionListResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/recall/RecallSuspensionListResponse.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.remote.recall +package com.android.mediproject.core.model.recall import com.android.mediproject.core.model.DataGoKrResponse diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/token/ReissueTokenResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/remote/token/ReissueTokenResponse.kt deleted file mode 100644 index 135b3a1ba..000000000 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/token/ReissueTokenResponse.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.android.mediproject.core.model.remote.token - -import com.android.mediproject.core.model.awscommon.BaseAwsSignResponse -import kotlinx.serialization.Serializable - -@Serializable -class ReissueTokenResponse : BaseAwsSignResponse() \ No newline at end of file diff --git a/core/model/src/main/java/com/android/mediproject/core/model/requestparameters/VertexAiPredictParameter.kt b/core/model/src/main/java/com/android/mediproject/core/model/requestparameters/VertexAiPredictParameter.kt deleted file mode 100644 index 79ebd1455..000000000 --- a/core/model/src/main/java/com/android/mediproject/core/model/requestparameters/VertexAiPredictParameter.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.android.mediproject.core.model.requestparameters - - -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class VertexAiPredictParameter( - @SerialName("instances") val instances: List, - @SerialName("parameters") val parameters: Parameters -) { - @Serializable - data class Instance( - @SerialName("content") val content: String - ) - - @Serializable - data class Parameters( - @SerialName("confidenceThreshold") val confidenceThreshold: Double = 0.4, - @SerialName("maxPredictions") val maxPredictions: Int = 1 - ) -} \ No newline at end of file diff --git a/core/model/src/main/java/com/android/mediproject/core/model/search/SearchHistory.kt b/core/model/src/main/java/com/android/mediproject/core/model/search/SearchHistory.kt new file mode 100644 index 000000000..ea8b0cec9 --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/search/SearchHistory.kt @@ -0,0 +1,9 @@ +package com.android.mediproject.core.model.search + +import java.time.LocalDateTime + +data class SearchHistory( + val id: Long, + val query: String, + val searchedAt: LocalDateTime, +) diff --git a/core/model/src/main/java/com/android/mediproject/core/model/search/local/SearchHistoryItemDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/search/local/SearchHistoryItemDto.kt deleted file mode 100644 index 2caaee1ff..000000000 --- a/core/model/src/main/java/com/android/mediproject/core/model/search/local/SearchHistoryItemDto.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.android.mediproject.core.model.search.local - -import java.time.LocalDateTime - -data class SearchHistoryItemDto( - val id: Long, - val query: String, - val searchedAt: LocalDateTime -) \ No newline at end of file diff --git a/core/model/src/main/java/com/android/mediproject/core/model/searchmedicines/SearchQueryArgs.kt b/core/model/src/main/java/com/android/mediproject/core/model/searchmedicines/SearchQueryArgs.kt new file mode 100644 index 000000000..1c6b1bac9 --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/searchmedicines/SearchQueryArgs.kt @@ -0,0 +1,12 @@ +package com.android.mediproject.core.model.searchmedicines + +import com.android.mediproject.core.model.navargs.BaseNavArgs + +/** + * 검색어를 전달할 인자 + * + * @property query 검색어 + */ +data class SearchQueryArgs( + val query: String = "", +) : BaseNavArgs(SearchQueryArgs::class.java.name) diff --git a/core/model/src/main/java/com/android/mediproject/core/model/searchmedicines/local/SearchQueryArgs.kt b/core/model/src/main/java/com/android/mediproject/core/model/searchmedicines/local/SearchQueryArgs.kt deleted file mode 100644 index 643c8568f..000000000 --- a/core/model/src/main/java/com/android/mediproject/core/model/searchmedicines/local/SearchQueryArgs.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.android.mediproject.core.model.searchmedicines.local - -import com.android.mediproject.core.model.local.navargs.BaseNavArgs - -/** - * 검색어를 전달할 인자 - * - * @property query 검색어 - */ -data class SearchQueryArgs( - val query: String = "" -) : BaseNavArgs(SearchQueryArgs::class.java.name) \ No newline at end of file diff --git a/core/model/src/main/java/com/android/mediproject/core/model/awscommon/BaseAwsQueryResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/servercommon/ServerQueryResponse.kt similarity index 62% rename from core/model/src/main/java/com/android/mediproject/core/model/awscommon/BaseAwsQueryResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/servercommon/ServerQueryResponse.kt index 332ccd0bc..1f59f39ec 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/awscommon/BaseAwsQueryResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/servercommon/ServerQueryResponse.kt @@ -1,10 +1,10 @@ -package com.android.mediproject.core.model.awscommon +package com.android.mediproject.core.model.servercommon import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -open class BaseAwsQueryResponse { +open class ServerQueryResponse { @SerialName("message") val message: String = "" -} \ No newline at end of file +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/awscommon/BaseAwsSignResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/servercommon/ServerSignResponse.kt similarity index 80% rename from core/model/src/main/java/com/android/mediproject/core/model/awscommon/BaseAwsSignResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/servercommon/ServerSignResponse.kt index 6f3e9cec4..42eb78b62 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/awscommon/BaseAwsSignResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/servercommon/ServerSignResponse.kt @@ -1,14 +1,14 @@ -package com.android.mediproject.core.model.awscommon +package com.android.mediproject.core.model.servercommon import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -open class BaseAwsSignResponse { +open class ServerSignResponse { @SerialName("access_token") val accessToken: String? = null @SerialName("refresh_token") val refreshToken: String? = null @SerialName("message") val message: String = "" fun isSuccess(): Boolean = !accessToken.isNullOrEmpty() && !refreshToken.isNullOrEmpty() -} \ No newline at end of file +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/sign/SignInResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/sign/SignInResponse.kt similarity index 63% rename from core/model/src/main/java/com/android/mediproject/core/model/remote/sign/SignInResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/sign/SignInResponse.kt index df93bdeb8..1816345e3 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/sign/SignInResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/sign/SignInResponse.kt @@ -1,7 +1,7 @@ -package com.android.mediproject.core.model.remote.sign +package com.android.mediproject.core.model.sign -import com.android.mediproject.core.model.awscommon.BaseAwsSignResponse +import com.android.mediproject.core.model.servercommon.ServerSignResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -10,4 +10,4 @@ data class SignInResponse( @SerialName("userId") val _userId: Long?, @SerialName("nickname") val _nickName: String?, @SerialName("email") val _email: String?, -) : BaseAwsSignResponse() \ No newline at end of file +) : ServerSignResponse() diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/sign/SignUpResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/sign/SignUpResponse.kt similarity index 63% rename from core/model/src/main/java/com/android/mediproject/core/model/remote/sign/SignUpResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/sign/SignUpResponse.kt index 6d34a85bd..5dba4b651 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/sign/SignUpResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/sign/SignUpResponse.kt @@ -1,7 +1,7 @@ -package com.android.mediproject.core.model.remote.sign +package com.android.mediproject.core.model.sign -import com.android.mediproject.core.model.awscommon.BaseAwsSignResponse +import com.android.mediproject.core.model.servercommon.ServerSignResponse import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -10,4 +10,4 @@ data class SignUpResponse( @SerialName("userId") val _userId: Long?, @SerialName("nickname") val _nickName: String?, @SerialName("email") val _email: String?, -) : BaseAwsSignResponse() \ No newline at end of file +) : ServerSignResponse() diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/token/CurrentTokens.kt b/core/model/src/main/java/com/android/mediproject/core/model/token/CurrentTokens.kt similarity index 92% rename from core/model/src/main/java/com/android/mediproject/core/model/remote/token/CurrentTokens.kt rename to core/model/src/main/java/com/android/mediproject/core/model/token/CurrentTokens.kt index 7fdddabbd..d27740f2f 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/token/CurrentTokens.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/token/CurrentTokens.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.remote.token +package com.android.mediproject.core.model.token /** diff --git a/core/model/src/main/java/com/android/mediproject/core/model/token/ReissueTokenResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/token/ReissueTokenResponse.kt new file mode 100644 index 000000000..71e0568a5 --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/token/ReissueTokenResponse.kt @@ -0,0 +1,7 @@ +package com.android.mediproject.core.model.token + +import com.android.mediproject.core.model.servercommon.ServerSignResponse +import kotlinx.serialization.Serializable + +@Serializable +class ReissueTokenResponse : ServerSignResponse() diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/token/RequestBehavior.kt b/core/model/src/main/java/com/android/mediproject/core/model/token/RequestBehavior.kt similarity index 86% rename from core/model/src/main/java/com/android/mediproject/core/model/remote/token/RequestBehavior.kt rename to core/model/src/main/java/com/android/mediproject/core/model/token/RequestBehavior.kt index 82fc664ae..76df426fa 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/token/RequestBehavior.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/token/RequestBehavior.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.remote.token +package com.android.mediproject.core.model.token /** * 토큰 요청 이유 diff --git a/core/model/src/main/java/com/android/mediproject/core/model/remote/token/TokenState.kt b/core/model/src/main/java/com/android/mediproject/core/model/token/TokenState.kt similarity index 92% rename from core/model/src/main/java/com/android/mediproject/core/model/remote/token/TokenState.kt rename to core/model/src/main/java/com/android/mediproject/core/model/token/TokenState.kt index 93e65c449..aa64caf0f 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/remote/token/TokenState.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/token/TokenState.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.core.model.remote.token +package com.android.mediproject.core.model.token /** * 토큰 상태를 나타내는 클래스 diff --git a/core/model/src/main/java/com/android/mediproject/core/model/user/UserDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/user/User.kt similarity index 68% rename from core/model/src/main/java/com/android/mediproject/core/model/user/UserDto.kt rename to core/model/src/main/java/com/android/mediproject/core/model/user/User.kt index 4d008b6f6..b14747245 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/user/UserDto.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/user/User.kt @@ -1,8 +1,8 @@ package com.android.mediproject.core.model.user -data class UserDto( - val nickName: String +data class User( + val nickName: String, ) { var id: Long = 0 var email: String = "" -} \ No newline at end of file +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/user/local/UserDto.kt b/core/model/src/main/java/com/android/mediproject/core/model/user/local/UserDto.kt deleted file mode 100644 index ed65dc482..000000000 --- a/core/model/src/main/java/com/android/mediproject/core/model/user/local/UserDto.kt +++ /dev/null @@ -1,24 +0,0 @@ -package com.android.mediproject.core.model.user.local - -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -/** - * 유저 정보 데이터 - * - * @property nickName 유저 이름 - * @property userId 유저 아이디 - * @property email 유저 이메일 - * @property createdAt 회원가입 날짜 - */ -@Serializable -data class LocalUserDto( - @SerialName("nickname") - val nickName: String, - @SerialName("user_id") - val userId: Int, - @SerialName("email") - val email: String, - @SerialName("created_at") - val createdAt: String -) \ No newline at end of file diff --git a/core/model/src/main/java/com/android/mediproject/core/model/user/remote/ChangeNicknameResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/user/remote/ChangeNicknameResponse.kt index 21e85ac7c..16f00323d 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/user/remote/ChangeNicknameResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/user/remote/ChangeNicknameResponse.kt @@ -1,7 +1,7 @@ package com.android.mediproject.core.model.user.remote -import com.android.mediproject.core.model.awscommon.BaseAwsQueryResponse +import com.android.mediproject.core.model.servercommon.ServerQueryResponse import kotlinx.serialization.Serializable @Serializable -class ChangeNicknameResponse : BaseAwsQueryResponse() +class ChangeNicknameResponse : ServerQueryResponse() diff --git a/core/model/src/main/java/com/android/mediproject/core/model/user/remote/ChangePasswordResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/user/remote/ChangePasswordResponse.kt index f15da562c..8918c5f50 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/user/remote/ChangePasswordResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/user/remote/ChangePasswordResponse.kt @@ -1,7 +1,7 @@ package com.android.mediproject.core.model.user.remote -import com.android.mediproject.core.model.awscommon.BaseAwsQueryResponse +import com.android.mediproject.core.model.servercommon.ServerQueryResponse import kotlinx.serialization.Serializable @Serializable -class ChangePasswordResponse : BaseAwsQueryResponse() \ No newline at end of file +class ChangePasswordResponse : ServerQueryResponse() diff --git a/core/model/src/main/java/com/android/mediproject/core/model/user/remote/UserResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/user/remote/UserResponse.kt index 0f64d8183..0cd490db4 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/user/remote/UserResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/user/remote/UserResponse.kt @@ -1,6 +1,6 @@ package com.android.mediproject.core.model.user.remote -import com.android.mediproject.core.model.user.UserDto +import com.android.mediproject.core.model.user.User import kotlinx.serialization.Serializable /** @@ -13,10 +13,10 @@ import kotlinx.serialization.Serializable */ @Serializable data class UserResponse( - val nickname: String, val userId: Long, val email: String, val message: String + val nickname: String, val userId: Long, val email: String, val message: String, ) -fun UserResponse.toUserDto() = UserDto(nickName = nickname).apply { +fun UserResponse.toUserDto() = User(nickName = nickname).apply { id = userId email = this@toUserDto.email -} \ No newline at end of file +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/user/remote/WithdrawalResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/user/remote/WithdrawalResponse.kt index d70040fff..b3a8e72cc 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/user/remote/WithdrawalResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/user/remote/WithdrawalResponse.kt @@ -1,7 +1,7 @@ package com.android.mediproject.core.model.user.remote -import com.android.mediproject.core.model.awscommon.BaseAwsQueryResponse +import com.android.mediproject.core.model.servercommon.ServerQueryResponse import kotlinx.serialization.Serializable @Serializable -class WithdrawalResponse : BaseAwsQueryResponse() \ No newline at end of file +class WithdrawalResponse : ServerQueryResponse() diff --git a/core/network/build.gradle.kts b/core/network/build.gradle.kts index 7225d702e..5b1527eb9 100644 --- a/core/network/build.gradle.kts +++ b/core/network/build.gradle.kts @@ -5,13 +5,15 @@ plugins { android { namespace = "com.android.mediproject.core.network" -} -hilt { - enableAggregatingTask = true + hilt { + enableAggregatingTask = true + } + } + dependencies { implementation(project(":core:common")) implementation(project(":core:model")) diff --git a/core/network/src/main/java/com/android/mediproject/core/network/InternetNetworkListener.kt b/core/network/src/main/java/com/android/mediproject/core/network/NetworkStatusManager.kt similarity index 76% rename from core/network/src/main/java/com/android/mediproject/core/network/InternetNetworkListener.kt rename to core/network/src/main/java/com/android/mediproject/core/network/NetworkStatusManager.kt index f9d4de076..826357736 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/InternetNetworkListener.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/NetworkStatusManager.kt @@ -4,9 +4,6 @@ import android.content.Context import android.content.Context.CONNECTIVITY_SERVICE import android.net.ConnectivityManager import android.net.Network -import android.net.NetworkCapabilities -import android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET -import android.net.NetworkRequest import android.os.Handler import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver @@ -17,11 +14,11 @@ import javax.inject.Singleton @Singleton -class InternetNetworkListener @Inject constructor(@ApplicationContext private val context: Context) : LifecycleEventObserver { +class NetworkStatusManager @Inject constructor(@ApplicationContext private val context: Context) : LifecycleEventObserver { - private val connectivityManager by lazy { + private val connectivityManager = context.getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager - } + private val networkCallback: ConnectivityManager.NetworkCallback = object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network: Network) { @@ -43,10 +40,6 @@ class InternetNetworkListener @Inject constructor(@ApplicationContext private va var networkStateCallback: NetworkStateCallback? = null set(value) { field = value - val request = NetworkRequest.Builder() - .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED) - .addCapability(NET_CAPABILITY_INTERNET) - .build() connectivityManager.registerDefaultNetworkCallback(networkCallback, Handler.createAsync(context.mainLooper)) } @@ -69,4 +62,4 @@ class InternetNetworkListener @Inject constructor(@ApplicationContext private va else -> {} } } -} \ No newline at end of file +} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurIngrDataSource.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurIngrDataSource.kt index 37e8d63ae..2b2b82cde 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurIngrDataSource.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurIngrDataSource.kt @@ -1,11 +1,11 @@ package com.android.mediproject.core.network.datasource.dur -import com.android.mediproject.core.model.datagokr.duringr.capacity.DurIngrCapacityAttentionResponse -import com.android.mediproject.core.model.datagokr.duringr.combination.DurIngrCombinationTabooResponse -import com.android.mediproject.core.model.datagokr.duringr.dosing.DurIngrDosingCautionResponse -import com.android.mediproject.core.model.datagokr.duringr.pregnancy.DurIngrPregnantWomanTabooResponse -import com.android.mediproject.core.model.datagokr.duringr.senior.DurIngrSeniorCautionResponse -import com.android.mediproject.core.model.datagokr.duringr.specialtyagegroup.DurIngrSpecialtyAgeGroupTabooResponse +import com.android.mediproject.core.model.dur.duringr.capacity.DurIngrCapacityAttentionResponse +import com.android.mediproject.core.model.dur.duringr.combination.DurIngrCombinationTabooResponse +import com.android.mediproject.core.model.dur.duringr.dosing.DurIngrDosingCautionResponse +import com.android.mediproject.core.model.dur.duringr.pregnancy.DurIngrPregnantWomanTabooResponse +import com.android.mediproject.core.model.dur.duringr.senior.DurIngrSeniorCautionResponse +import com.android.mediproject.core.model.dur.duringr.specialtyagegroup.DurIngrSpecialtyAgeGroupTabooResponse interface DurIngrDataSource { suspend fun getCombinationTabooInfo( diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurIngrDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurIngrDataSourceImpl.kt index d66001eac..a18be6975 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurIngrDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurIngrDataSourceImpl.kt @@ -1,11 +1,11 @@ package com.android.mediproject.core.network.datasource.dur -import com.android.mediproject.core.model.datagokr.duringr.capacity.DurIngrCapacityAttentionResponse -import com.android.mediproject.core.model.datagokr.duringr.combination.DurIngrCombinationTabooResponse -import com.android.mediproject.core.model.datagokr.duringr.dosing.DurIngrDosingCautionResponse -import com.android.mediproject.core.model.datagokr.duringr.pregnancy.DurIngrPregnantWomanTabooResponse -import com.android.mediproject.core.model.datagokr.duringr.senior.DurIngrSeniorCautionResponse -import com.android.mediproject.core.model.datagokr.duringr.specialtyagegroup.DurIngrSpecialtyAgeGroupTabooResponse +import com.android.mediproject.core.model.dur.duringr.capacity.DurIngrCapacityAttentionResponse +import com.android.mediproject.core.model.dur.duringr.combination.DurIngrCombinationTabooResponse +import com.android.mediproject.core.model.dur.duringr.dosing.DurIngrDosingCautionResponse +import com.android.mediproject.core.model.dur.duringr.pregnancy.DurIngrPregnantWomanTabooResponse +import com.android.mediproject.core.model.dur.duringr.senior.DurIngrSeniorCautionResponse +import com.android.mediproject.core.model.dur.duringr.specialtyagegroup.DurIngrSpecialtyAgeGroupTabooResponse import com.android.mediproject.core.network.module.datagokr.DurIngrInfoNetworkApi import com.android.mediproject.core.network.onDataGokrResponse import javax.inject.Inject @@ -15,7 +15,7 @@ class DurIngrDataSourceImpl @Inject constructor( ) : DurIngrDataSource { override suspend fun getCombinationTabooInfo(ingrKorName: String?, ingrCode: String?): Result = durIngrInfoNetworkApi.getCombinationTabooInfo(ingrKorName = ingrKorName, ingrCode = ingrCode).onDataGokrResponse() - + override suspend fun getSpecialtyAgeGroupTabooInfo(ingrName: String?, ingrCode: String?): Result = durIngrInfoNetworkApi.getSpecialtyAgeGroupTabooInfo(ingrName = ingrName, ingrCode = ingrCode).onDataGokrResponse() diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSource.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSource.kt index 99eb8b197..e89492241 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSource.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSource.kt @@ -1,14 +1,14 @@ package com.android.mediproject.core.network.datasource.dur -import com.android.mediproject.core.model.datagokr.durproduct.capacity.DurProductCapacityAttentionResponse -import com.android.mediproject.core.model.datagokr.durproduct.combination.DurProductCombinationTabooResponse -import com.android.mediproject.core.model.datagokr.durproduct.dosing.DurProductDosingCautionResponse -import com.android.mediproject.core.model.datagokr.durproduct.efficacygroupduplication.DurProductEfficacyGroupDuplicationResponse -import com.android.mediproject.core.model.datagokr.durproduct.extendedreleasetablet.DurProductExReleaseTableSplitAttentionResponse -import com.android.mediproject.core.model.datagokr.durproduct.pregnancy.DurProductPregnantWomanTabooResponse -import com.android.mediproject.core.model.datagokr.durproduct.productlist.DurProductListResponse -import com.android.mediproject.core.model.datagokr.durproduct.senior.DurProductSeniorCautionResponse -import com.android.mediproject.core.model.datagokr.durproduct.specialtyagegroup.DurProductSpecialtyAgeGroupTabooResponse +import com.android.mediproject.core.model.dur.durproduct.capacity.DurProductCapacityAttentionResponse +import com.android.mediproject.core.model.dur.durproduct.combination.DurProductCombinationTabooResponse +import com.android.mediproject.core.model.dur.durproduct.dosing.DurProductDosingCautionResponse +import com.android.mediproject.core.model.dur.durproduct.efficacygroupduplication.DurProductEfficacyGroupDuplicationResponse +import com.android.mediproject.core.model.dur.durproduct.extendedreleasetablet.DurProductExReleaseTableSplitAttentionResponse +import com.android.mediproject.core.model.dur.durproduct.pregnancy.DurProductPregnantWomanTabooResponse +import com.android.mediproject.core.model.dur.durproduct.productlist.DurProductListResponse +import com.android.mediproject.core.model.dur.durproduct.senior.DurProductSeniorCautionResponse +import com.android.mediproject.core.model.dur.durproduct.specialtyagegroup.DurProductSpecialtyAgeGroupTabooResponse interface DurProductDataSource { suspend fun getDurProductList( diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt index fba98e108..f6e39bd09 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt @@ -1,14 +1,14 @@ package com.android.mediproject.core.network.datasource.dur -import com.android.mediproject.core.model.datagokr.durproduct.capacity.DurProductCapacityAttentionResponse -import com.android.mediproject.core.model.datagokr.durproduct.combination.DurProductCombinationTabooResponse -import com.android.mediproject.core.model.datagokr.durproduct.dosing.DurProductDosingCautionResponse -import com.android.mediproject.core.model.datagokr.durproduct.efficacygroupduplication.DurProductEfficacyGroupDuplicationResponse -import com.android.mediproject.core.model.datagokr.durproduct.extendedreleasetablet.DurProductExReleaseTableSplitAttentionResponse -import com.android.mediproject.core.model.datagokr.durproduct.pregnancy.DurProductPregnantWomanTabooResponse -import com.android.mediproject.core.model.datagokr.durproduct.productlist.DurProductListResponse -import com.android.mediproject.core.model.datagokr.durproduct.senior.DurProductSeniorCautionResponse -import com.android.mediproject.core.model.datagokr.durproduct.specialtyagegroup.DurProductSpecialtyAgeGroupTabooResponse +import com.android.mediproject.core.model.dur.durproduct.capacity.DurProductCapacityAttentionResponse +import com.android.mediproject.core.model.dur.durproduct.combination.DurProductCombinationTabooResponse +import com.android.mediproject.core.model.dur.durproduct.dosing.DurProductDosingCautionResponse +import com.android.mediproject.core.model.dur.durproduct.efficacygroupduplication.DurProductEfficacyGroupDuplicationResponse +import com.android.mediproject.core.model.dur.durproduct.extendedreleasetablet.DurProductExReleaseTableSplitAttentionResponse +import com.android.mediproject.core.model.dur.durproduct.pregnancy.DurProductPregnantWomanTabooResponse +import com.android.mediproject.core.model.dur.durproduct.productlist.DurProductListResponse +import com.android.mediproject.core.model.dur.durproduct.senior.DurProductSeniorCautionResponse +import com.android.mediproject.core.model.dur.durproduct.specialtyagegroup.DurProductSpecialtyAgeGroupTabooResponse import com.android.mediproject.core.network.module.datagokr.DurProductInfoNetworkApi import com.android.mediproject.core.network.onDataGokrResponse import javax.inject.Inject diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/granule/GranuleIdentificationDataSource.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/granule/GranuleIdentificationDataSource.kt index 852dc47f2..4023e3290 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/granule/GranuleIdentificationDataSource.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/granule/GranuleIdentificationDataSource.kt @@ -1,6 +1,6 @@ package com.android.mediproject.core.network.datasource.granule -import com.android.mediproject.core.model.remote.granule.GranuleIdentificationInfoResponse +import com.android.mediproject.core.model.granule.GranuleIdentificationInfoResponse import kotlinx.coroutines.flow.Flow import retrofit2.http.Query @@ -11,4 +11,4 @@ interface GranuleIdentificationDataSource { @Query("entp_name") entpName: String?, @Query("item_seq") itemSeq: String?, ): Flow> -} \ No newline at end of file +} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/granule/GranuleIdentificationDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/granule/GranuleIdentificationDataSourceImpl.kt index 6f945d72b..3a7dd7617 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/granule/GranuleIdentificationDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/granule/GranuleIdentificationDataSourceImpl.kt @@ -1,6 +1,6 @@ package com.android.mediproject.core.network.datasource.granule -import com.android.mediproject.core.model.remote.granule.GranuleIdentificationInfoResponse +import com.android.mediproject.core.model.granule.GranuleIdentificationInfoResponse import com.android.mediproject.core.model.toResult import com.android.mediproject.core.network.module.datagokr.DataGoKrNetworkApi import com.android.mediproject.core.network.onResponse diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/image/GoogleSearchDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/image/GoogleSearchDataSourceImpl.kt index caf8d068f..0ceca7a7b 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/image/GoogleSearchDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/image/GoogleSearchDataSourceImpl.kt @@ -2,6 +2,7 @@ package com.android.mediproject.core.network.datasource.image import android.util.LruCache import com.android.mediproject.core.network.module.GoogleSearchNetworkApi +import com.android.mediproject.core.network.module.safetyEncode import com.android.mediproject.core.network.onResponse import com.android.mediproject.core.network.parser.HtmlParser import javax.inject.Inject @@ -16,12 +17,12 @@ class GoogleSearchDataSourceImpl @Inject constructor( private val urlCache = LruCache(60) override suspend fun getImageUrl(medicineName: String): Result { - val query = additionalQuery + medicineName + val query = (additionalQuery + medicineName).safetyEncode() return synchronized(urlCache) { urlCache.get(query) - }?.let { - Result.success(it) + }?.run { + Result.success(this) } ?: run { googleSearchNetworkApi.getImageUrl(query).onResponse().fold( onSuccess = { diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/adminaction/AdminActionDataSource.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/adminaction/AdminActionDataSource.kt index 410330b2b..6343ee6de 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/adminaction/AdminActionDataSource.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/adminaction/AdminActionDataSource.kt @@ -1,10 +1,10 @@ package com.android.mediproject.core.network.datasource.penalties.adminaction -import com.android.mediproject.core.model.remote.adminaction.AdminActionListResponse +import com.android.mediproject.core.model.adminaction.AdminActionListResponse interface AdminActionDataSource { suspend fun getAdminActionList( pageNo: Int, ): Result -} \ No newline at end of file +} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/adminaction/AdminActionListDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/adminaction/AdminActionListDataSourceImpl.kt index cba98cdb0..3ad355a70 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/adminaction/AdminActionListDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/adminaction/AdminActionListDataSourceImpl.kt @@ -3,7 +3,7 @@ package com.android.mediproject.core.network.datasource.penalties.adminaction import androidx.paging.PagingSource import androidx.paging.PagingState import com.android.mediproject.core.common.DATA_GO_KR_PAGE_SIZE -import com.android.mediproject.core.model.remote.adminaction.AdminActionListResponse +import com.android.mediproject.core.model.adminaction.AdminActionListResponse import javax.inject.Inject diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/recallsuspension/RecallSuspensionDataSource.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/recallsuspension/RecallSuspensionDataSource.kt index e09ad3ce1..13ce75ca1 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/recallsuspension/RecallSuspensionDataSource.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/recallsuspension/RecallSuspensionDataSource.kt @@ -1,7 +1,7 @@ package com.android.mediproject.core.network.datasource.penalties.recallsuspension -import com.android.mediproject.core.model.remote.recall.DetailRecallSuspensionResponse -import com.android.mediproject.core.model.remote.recall.RecallSuspensionListResponse +import com.android.mediproject.core.model.recall.DetailRecallSuspensionResponse +import com.android.mediproject.core.model.recall.RecallSuspensionListResponse import kotlinx.coroutines.flow.Flow interface RecallSuspensionDataSource { @@ -23,4 +23,4 @@ interface RecallSuspensionDataSource { company: String?, product: String?, ): Flow> -} \ No newline at end of file +} diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/recallsuspension/RecallSuspensionDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/recallsuspension/RecallSuspensionDataSourceImpl.kt index 15b54f087..a576aabf9 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/recallsuspension/RecallSuspensionDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/recallsuspension/RecallSuspensionDataSourceImpl.kt @@ -1,6 +1,6 @@ package com.android.mediproject.core.network.datasource.penalties.recallsuspension -import com.android.mediproject.core.model.remote.recall.DetailRecallSuspensionResponse +import com.android.mediproject.core.model.recall.DetailRecallSuspensionResponse import com.android.mediproject.core.network.module.datagokr.DataGoKrNetworkApi import com.android.mediproject.core.network.onDataGokrResponse import kotlinx.coroutines.CoroutineDispatcher diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/recallsuspension/RecallSuspensionListDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/recallsuspension/RecallSuspensionListDataSourceImpl.kt index 416f343e6..f968bd49d 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/recallsuspension/RecallSuspensionListDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/penalties/recallsuspension/RecallSuspensionListDataSourceImpl.kt @@ -3,7 +3,7 @@ package com.android.mediproject.core.network.datasource.penalties.recallsuspensi import androidx.paging.PagingSource import androidx.paging.PagingState import com.android.mediproject.core.common.DATA_GO_KR_PAGE_SIZE -import com.android.mediproject.core.model.remote.recall.RecallSuspensionListResponse.Item +import com.android.mediproject.core.model.recall.RecallSuspensionListResponse.Item import javax.inject.Inject class RecallSuspensionListDataSourceImpl @Inject constructor( diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/sign/SignDataSource.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/sign/SignDataSource.kt index c40a56e36..b4cc5d10e 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/sign/SignDataSource.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/sign/SignDataSource.kt @@ -1,7 +1,7 @@ package com.android.mediproject.core.network.datasource.sign -import com.android.mediproject.core.model.remote.sign.SignInResponse -import com.android.mediproject.core.model.remote.sign.SignUpResponse +import com.android.mediproject.core.model.sign.SignInResponse +import com.android.mediproject.core.model.sign.SignUpResponse import com.android.mediproject.core.model.requestparameters.LoginParameter import com.android.mediproject.core.model.requestparameters.SignUpParameter import kotlinx.coroutines.flow.Flow diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/sign/SignDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/sign/SignDataSourceImpl.kt index 4f92e1ea1..e7e0c411f 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/sign/SignDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/sign/SignDataSourceImpl.kt @@ -1,9 +1,9 @@ package com.android.mediproject.core.network.datasource.sign import com.android.mediproject.core.common.util.AesCoder -import com.android.mediproject.core.model.remote.sign.SignInResponse -import com.android.mediproject.core.model.remote.sign.SignUpResponse -import com.android.mediproject.core.model.remote.token.RequestBehavior +import com.android.mediproject.core.model.sign.SignInResponse +import com.android.mediproject.core.model.sign.SignUpResponse +import com.android.mediproject.core.model.token.RequestBehavior import com.android.mediproject.core.model.requestparameters.LoginParameter import com.android.mediproject.core.model.requestparameters.SignUpParameter diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/tokens/NewTokens.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/tokens/NewTokens.kt index 91b03785e..a0c7d8354 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/tokens/NewTokens.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/tokens/NewTokens.kt @@ -1,6 +1,6 @@ package com.android.mediproject.core.network.datasource.tokens -import com.android.mediproject.core.model.remote.token.RequestBehavior +import com.android.mediproject.core.model.token.RequestBehavior import java.time.Duration import java.time.LocalDateTime diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/tokens/TokenDataSource.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/tokens/TokenDataSource.kt index 9e9e77940..5bee842fe 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/tokens/TokenDataSource.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/tokens/TokenDataSource.kt @@ -1,7 +1,7 @@ package com.android.mediproject.core.network.datasource.tokens -import com.android.mediproject.core.model.remote.token.CurrentTokens -import com.android.mediproject.core.model.remote.token.TokenState +import com.android.mediproject.core.model.token.CurrentTokens +import com.android.mediproject.core.model.token.TokenState import kotlinx.coroutines.flow.Flow interface TokenDataSource { diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/tokens/TokenDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/tokens/TokenDataSourceImpl.kt index e49ccd7ef..30532aecd 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/tokens/TokenDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/tokens/TokenDataSourceImpl.kt @@ -1,10 +1,10 @@ package com.android.mediproject.core.network.datasource.tokens import android.util.Log -import com.android.mediproject.core.model.remote.token.CurrentTokens -import com.android.mediproject.core.model.remote.token.ReissueTokenResponse -import com.android.mediproject.core.model.remote.token.RequestBehavior -import com.android.mediproject.core.model.remote.token.TokenState +import com.android.mediproject.core.model.token.CurrentTokens +import com.android.mediproject.core.model.token.ReissueTokenResponse +import com.android.mediproject.core.model.token.RequestBehavior +import com.android.mediproject.core.model.token.TokenState import com.android.mediproject.core.network.module.AwsNetworkApi import com.android.mediproject.core.network.tokens.TokenServer import kotlinx.coroutines.channels.BufferOverflow @@ -40,7 +40,7 @@ class TokenDataSourceImpl @Inject constructor( /** * 토큰 갱신 */ - private fun reissueTokens(refreshToken: CharArray): Flow> = channelFlow { + private fun reissueTokens(): Flow> = channelFlow { awsNetworkApi.reissueTokens().onResponseWithTokens(RequestBehavior.ReissueTokens, tokenServer).fold( onSuccess = { Result.success(it) }, onFailure = { Result.failure(it) }, @@ -69,7 +69,7 @@ class TokenDataSourceImpl @Inject constructor( } mutex.withLock { processingTokenReissuance = true } - reissueTokens(currentToken.data.refreshToken).collectLatest { reissueTokenResponseResult -> + reissueTokens().collectLatest { reissueTokenResponseResult -> val result = reissueTokenResponseResult.fold(onSuccess = { Result.success(Unit) }, onFailure = { Result.failure(it) }) Log.d("wap", "reissueToken, result : $result") diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/tokens/TokenResponseInterceptor.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/tokens/TokenResponseInterceptor.kt index 214413ec8..957c95fe9 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/tokens/TokenResponseInterceptor.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/tokens/TokenResponseInterceptor.kt @@ -1,8 +1,8 @@ package com.android.mediproject.core.network.datasource.tokens import android.util.Log -import com.android.mediproject.core.model.awscommon.BaseAwsSignResponse -import com.android.mediproject.core.model.remote.token.RequestBehavior +import com.android.mediproject.core.model.servercommon.ServerSignResponse +import com.android.mediproject.core.model.token.RequestBehavior import com.android.mediproject.core.network.tokens.TokenServer import retrofit2.Response @@ -11,7 +11,7 @@ import retrofit2.Response * * @return Result */ -internal suspend inline fun Response.onResponseWithTokens( +internal suspend inline fun Response.onResponseWithTokens( requestBehavior: RequestBehavior, tokenServer: TokenServer, ): Result = run { diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/GoogleSearchNetwork.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/GoogleSearchNetwork.kt index db30819c2..f216c318c 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/module/GoogleSearchNetwork.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/GoogleSearchNetwork.kt @@ -36,16 +36,15 @@ object GoogleSearchNetwork { } -private const val encoding = "utf8" -private const val isch = "isch" - interface GoogleSearchNetworkApi { - @GET(value = "search") suspend fun getImageUrl( @Query("q", encoded = true) query: String, - @Query("tbm", encoded = true) tbm: String = isch, - @Query("ie", encoded = true) ie: String = encoding, - @Query("oe", encoded = true) oe: String = encoding, + @Query("tbm", encoded = true) tbm: String = ISCH, + @Query("ie", encoded = true) ie: String = ENCODING, + @Query("oe", encoded = true) oe: String = ENCODING, ): Response } + +private const val ENCODING: String = "utf8" +private const val ISCH: String = "isch" diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/NetworkModule.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/NetworkModule.kt index 0afb68798..0a03669a9 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/module/NetworkModule.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/NetworkModule.kt @@ -10,7 +10,6 @@ import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent -import kotlinx.coroutines.DelicateCoroutinesApi import okhttp3.OkHttpClient import okhttp3.logging.HttpLoggingInterceptor import java.security.KeyStore @@ -63,7 +62,7 @@ class CertificateHelper @Inject constructor(@ApplicationContext context: Context } } -@Module(includes = [DataGoKrNetwork::class, AwsNetwork::class]) +@Module(includes = [DataGoKrNetwork::class, ServerNetwork::class]) @InstallIn(SingletonComponent::class) object NetworkModule { diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/AwsNetwork.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/ServerNetwork.kt similarity index 89% rename from core/network/src/main/java/com/android/mediproject/core/network/module/AwsNetwork.kt rename to core/network/src/main/java/com/android/mediproject/core/network/module/ServerNetwork.kt index 1afbe0fe2..cb4536f5e 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/module/AwsNetwork.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/ServerNetwork.kt @@ -10,9 +10,6 @@ import com.android.mediproject.core.model.favoritemedicine.DeleteFavoriteMedicin import com.android.mediproject.core.model.favoritemedicine.FavoriteMedicineListResponse import com.android.mediproject.core.model.favoritemedicine.NewFavoriteMedicineResponse import com.android.mediproject.core.model.medicine.MedicineIdResponse -import com.android.mediproject.core.model.remote.sign.SignInResponse -import com.android.mediproject.core.model.remote.sign.SignUpResponse -import com.android.mediproject.core.model.remote.token.ReissueTokenResponse import com.android.mediproject.core.model.requestparameters.AddFavoriteMedicineParameter import com.android.mediproject.core.model.requestparameters.ChangeNicknameParameter import com.android.mediproject.core.model.requestparameters.ChangePasswordRequestParameter @@ -20,6 +17,9 @@ import com.android.mediproject.core.model.requestparameters.DeleteCommentParamet import com.android.mediproject.core.model.requestparameters.EditCommentParameter import com.android.mediproject.core.model.requestparameters.GetMedicineIdParameter import com.android.mediproject.core.model.requestparameters.NewCommentParameter +import com.android.mediproject.core.model.sign.SignInResponse +import com.android.mediproject.core.model.sign.SignUpResponse +import com.android.mediproject.core.model.token.ReissueTokenResponse import com.android.mediproject.core.model.user.remote.ChangeNicknameResponse import com.android.mediproject.core.model.user.remote.ChangePasswordResponse import com.android.mediproject.core.model.user.remote.UserResponse @@ -64,16 +64,15 @@ import javax.inject.Singleton @InstallIn(SingletonComponent::class) @Module -object AwsNetwork { +object ServerNetwork { @Provides @Named("awsNetworkApiWithoutTokens") @Singleton fun providesWithoutTokensAwsNetworkApi( @Named("okHttpClientWithoutAny") okHttpClient: OkHttpClient, - ): AwsNetworkApi = - Retrofit.Builder().client(okHttpClient).addConverterFactory(Json.asConverterFactory("application/json".toMediaType())) - .baseUrl(BuildConfig.AWS_BASE_URL).build().create(AwsNetworkApi::class.java) + ): AwsNetworkApi = Retrofit.Builder().client(okHttpClient).addConverterFactory(Json.asConverterFactory("application/json".toMediaType())) + .baseUrl(BuildConfig.AWS_BASE_URL).build().create(AwsNetworkApi::class.java) @Provides @@ -87,17 +86,15 @@ object AwsNetwork { @Singleton fun providesAwsNetworkApi( @Named("okHttpClientWithAccessTokens") okHttpClient: OkHttpClient, - ): AwsNetworkApi = - Retrofit.Builder().client(okHttpClient).addConverterFactory(Json.asConverterFactory("application/json".toMediaType())) - .baseUrl(BuildConfig.AWS_BASE_URL).build().create(AwsNetworkApi::class.java) + ): AwsNetworkApi = Retrofit.Builder().client(okHttpClient).addConverterFactory(Json.asConverterFactory("application/json".toMediaType())) + .baseUrl(BuildConfig.AWS_BASE_URL).build().create(AwsNetworkApi::class.java) @Provides @Named("awsNetworkApiWithRefreshTokens") fun providesReissueTokenAwsNetworkApi( @Named("okHttpClientWithReissueTokens") okHttpClient: OkHttpClient, - ): AwsNetworkApi = - Retrofit.Builder().client(okHttpClient).addConverterFactory(Json.asConverterFactory("application/json".toMediaType())) - .baseUrl(BuildConfig.AWS_BASE_URL).build().create(AwsNetworkApi::class.java) + ): AwsNetworkApi = Retrofit.Builder().client(okHttpClient).addConverterFactory(Json.asConverterFactory("application/json".toMediaType())) + .baseUrl(BuildConfig.AWS_BASE_URL).build().create(AwsNetworkApi::class.java) @Provides @Singleton @@ -106,8 +103,8 @@ object AwsNetwork { @Provides fun providesSignDataSource( - @Named("awsNetworkApiWithoutTokens") awsNetworkApi: AwsNetworkApi, TokenServer: TokenServer, aesCoder: AesCoder, - ): SignDataSource = SignDataSourceImpl(awsNetworkApi, TokenServer, aesCoder) + @Named("awsNetworkApiWithoutTokens") awsNetworkApi: AwsNetworkApi, tokenServer: TokenServer, aesCoder: AesCoder, + ): SignDataSource = SignDataSourceImpl(awsNetworkApi, tokenServer, aesCoder) @Provides @Singleton diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DataGoKrNetworkApi.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DataGoKrNetworkApi.kt index 28dc9a75b..14c7c1119 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DataGoKrNetworkApi.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DataGoKrNetworkApi.kt @@ -1,14 +1,14 @@ package com.android.mediproject.core.network.module.datagokr import com.android.mediproject.core.common.BuildConfig -import com.android.mediproject.core.common.DATA_GO_KR_DEFAULT_PAGE_NO +import com.android.mediproject.core.common.DATA_GO_KR_PAGE_NO import com.android.mediproject.core.common.DATA_GO_KR_PAGE_SIZE import com.android.mediproject.core.common.JSON import com.android.mediproject.core.model.medicine.medicineapproval.MedicineApprovalListResponse -import com.android.mediproject.core.model.remote.adminaction.AdminActionListResponse -import com.android.mediproject.core.model.remote.granule.GranuleIdentificationInfoResponse -import com.android.mediproject.core.model.remote.recall.DetailRecallSuspensionResponse -import com.android.mediproject.core.model.remote.recall.RecallSuspensionListResponse +import com.android.mediproject.core.model.adminaction.AdminActionListResponse +import com.android.mediproject.core.model.granule.GranuleIdentificationInfoResponse +import com.android.mediproject.core.model.recall.DetailRecallSuspensionResponse +import com.android.mediproject.core.model.recall.RecallSuspensionListResponse import retrofit2.Response import retrofit2.http.GET import retrofit2.http.Query @@ -45,7 +45,7 @@ interface DataGoKrNetworkApi : DurProductInfoNetworkApi, DurIngrInfoNetworkApi { @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, @Query("item_name", encoded = false) itemName: String = "", @Query("item_seq", encoded = true) itemSeq: String = "", - @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("pageNo") pageNo: Int = DATA_GO_KR_PAGE_NO, @Query("type") type: String = JSON, @Query("numOfRows") numOfRows: Int = 1, ): Response @@ -70,7 +70,7 @@ interface DataGoKrNetworkApi : DurProductInfoNetworkApi, DurIngrInfoNetworkApi { @GET(value = "MdcinRtrvlSleStpgeInfoService03/getMdcinRtrvlSleStpgeItem02") suspend fun getDetailRecallSuspensionInfo( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("pageNo") pageNo: Int = DATA_GO_KR_PAGE_NO, @Query("type") type: String = JSON, @Query("Entrps", encoded = true) company: String?, @Query("Prduct", encoded = true) product: String?, @@ -99,7 +99,7 @@ interface DataGoKrNetworkApi : DurProductInfoNetworkApi, DurIngrInfoNetworkApi { @GET(value = "MdcinGrnIdntfcInfoService01/getMdcinGrnIdntfcInfoList01") suspend fun getGranuleIdentificationInfo( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("pageNo") pageNo: Int = DATA_GO_KR_PAGE_NO, @Query("item_name") itemName: String?, @Query("entp_name") entpName: String?, @Query("item_seq") itemSeq: String?, diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurIngrInfoNetworkApi.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurIngrInfoNetworkApi.kt index 72b60ab13..aff3c2f16 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurIngrInfoNetworkApi.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurIngrInfoNetworkApi.kt @@ -1,15 +1,15 @@ package com.android.mediproject.core.network.module.datagokr import com.android.mediproject.core.common.BuildConfig -import com.android.mediproject.core.common.DATA_GO_KR_DEFAULT_PAGE_NO +import com.android.mediproject.core.common.DATA_GO_KR_PAGE_NO import com.android.mediproject.core.common.DATA_GO_KR_PAGE_SIZE import com.android.mediproject.core.common.JSON -import com.android.mediproject.core.model.datagokr.duringr.capacity.DurIngrCapacityAttentionResponse -import com.android.mediproject.core.model.datagokr.duringr.combination.DurIngrCombinationTabooResponse -import com.android.mediproject.core.model.datagokr.duringr.dosing.DurIngrDosingCautionResponse -import com.android.mediproject.core.model.datagokr.duringr.pregnancy.DurIngrPregnantWomanTabooResponse -import com.android.mediproject.core.model.datagokr.duringr.senior.DurIngrSeniorCautionResponse -import com.android.mediproject.core.model.datagokr.duringr.specialtyagegroup.DurIngrSpecialtyAgeGroupTabooResponse +import com.android.mediproject.core.model.dur.duringr.capacity.DurIngrCapacityAttentionResponse +import com.android.mediproject.core.model.dur.duringr.combination.DurIngrCombinationTabooResponse +import com.android.mediproject.core.model.dur.duringr.dosing.DurIngrDosingCautionResponse +import com.android.mediproject.core.model.dur.duringr.pregnancy.DurIngrPregnantWomanTabooResponse +import com.android.mediproject.core.model.dur.duringr.senior.DurIngrSeniorCautionResponse +import com.android.mediproject.core.model.dur.duringr.specialtyagegroup.DurIngrSpecialtyAgeGroupTabooResponse import retrofit2.Response import retrofit2.http.GET import retrofit2.http.Query @@ -30,7 +30,7 @@ interface DurIngrInfoNetworkApi { @GET(value = "DURIrdntInfoService02/getUsjntTabooInfoList01") suspend fun getCombinationTabooInfo( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("pageNo") pageNo: Int = DATA_GO_KR_PAGE_NO, @Query("typeName") typeName: String = "병용금기", @Query("ingrKorName") ingrKorName: String?, @Query("ingrCode") ingrCode: String?, @@ -48,7 +48,7 @@ interface DurIngrInfoNetworkApi { @GET(value = "DURIrdntInfoService02/getSpcifyAgrdeTabooInfoList01") suspend fun getSpecialtyAgeGroupTabooInfo( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("pageNo") pageNo: Int = DATA_GO_KR_PAGE_NO, @Query("typeName") typeName: String = "특정연령대금기", @Query("ingrName") ingrName: String?, @Query("ingrCode") ingrCode: String?, @@ -65,7 +65,7 @@ interface DurIngrInfoNetworkApi { @GET(value = "DURIrdntInfoService02/getPwnmTabooInfoList01") suspend fun getPregnantWomanTabooInfo( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("pageNo") pageNo: Int = DATA_GO_KR_PAGE_NO, @Query("typeName") typeName: String = "임부금기", @Query("ingrName") ingrName: String?, @Query("ingrCode") ingrCode: String?, @@ -82,7 +82,7 @@ interface DurIngrInfoNetworkApi { @GET(value = "DURIrdntInfoService02/getCpctyAtentInfoList01") suspend fun getCapacityAttentionInfo( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("pageNo") pageNo: Int = DATA_GO_KR_PAGE_NO, @Query("typeName") typeName: String = "용량주의", @Query("ingrName") ingrName: String?, @Query("ingrCode") ingrCode: String?, @@ -99,7 +99,7 @@ interface DurIngrInfoNetworkApi { @GET(value = "DURIrdntInfoService02/getMdctnPdAtentInfoList01") suspend fun getDosingCautionInfo( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("pageNo") pageNo: Int = DATA_GO_KR_PAGE_NO, @Query("typeName") typeName: String = "투여기간주의", @Query("ingrName") ingrName: String?, @Query("ingrCode") ingrCode: String?, @@ -117,7 +117,7 @@ interface DurIngrInfoNetworkApi { @GET(value = "DURIrdntInfoService02/getOdsnAtentInfoList01") suspend fun getSeniorCaution( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("pageNo") pageNo: Int = DATA_GO_KR_PAGE_NO, @Query("typeName") typeName: String = "노인주의", @Query("ingrName") ingrName: String?, @Query("ingrCode") ingrCode: String?, @@ -134,7 +134,7 @@ interface DurIngrInfoNetworkApi { @GET(value = "DURIrdntInfoService02/getEfcyDplctInfoList01") suspend fun getEfficacyGroupDuplicationInfo( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("pageNo") pageNo: Int = DATA_GO_KR_PAGE_NO, @Query("typeName") typeName: String = "효능군중복", @Query("ingrName") ingrName: String?, @Query("ingrCode") ingrCode: String?, diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurProductInfoNetworkApi.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurProductInfoNetworkApi.kt index 7cacaf1a6..17a0f8a7a 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurProductInfoNetworkApi.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurProductInfoNetworkApi.kt @@ -1,18 +1,18 @@ package com.android.mediproject.core.network.module.datagokr import com.android.mediproject.core.common.BuildConfig -import com.android.mediproject.core.common.DATA_GO_KR_DEFAULT_PAGE_NO -import com.android.mediproject.core.common.DATA_GO_KR_DEFAULT_ROW_SIZE +import com.android.mediproject.core.common.DATA_GO_KR_PAGE_NO +import com.android.mediproject.core.common.DATA_GO_KR_ROW_SIZE import com.android.mediproject.core.common.JSON -import com.android.mediproject.core.model.datagokr.durproduct.capacity.DurProductCapacityAttentionResponse -import com.android.mediproject.core.model.datagokr.durproduct.combination.DurProductCombinationTabooResponse -import com.android.mediproject.core.model.datagokr.durproduct.dosing.DurProductDosingCautionResponse -import com.android.mediproject.core.model.datagokr.durproduct.efficacygroupduplication.DurProductEfficacyGroupDuplicationResponse -import com.android.mediproject.core.model.datagokr.durproduct.extendedreleasetablet.DurProductExReleaseTableSplitAttentionResponse -import com.android.mediproject.core.model.datagokr.durproduct.pregnancy.DurProductPregnantWomanTabooResponse -import com.android.mediproject.core.model.datagokr.durproduct.productlist.DurProductListResponse -import com.android.mediproject.core.model.datagokr.durproduct.senior.DurProductSeniorCautionResponse -import com.android.mediproject.core.model.datagokr.durproduct.specialtyagegroup.DurProductSpecialtyAgeGroupTabooResponse +import com.android.mediproject.core.model.dur.durproduct.capacity.DurProductCapacityAttentionResponse +import com.android.mediproject.core.model.dur.durproduct.combination.DurProductCombinationTabooResponse +import com.android.mediproject.core.model.dur.durproduct.dosing.DurProductDosingCautionResponse +import com.android.mediproject.core.model.dur.durproduct.efficacygroupduplication.DurProductEfficacyGroupDuplicationResponse +import com.android.mediproject.core.model.dur.durproduct.extendedreleasetablet.DurProductExReleaseTableSplitAttentionResponse +import com.android.mediproject.core.model.dur.durproduct.pregnancy.DurProductPregnantWomanTabooResponse +import com.android.mediproject.core.model.dur.durproduct.productlist.DurProductListResponse +import com.android.mediproject.core.model.dur.durproduct.senior.DurProductSeniorCautionResponse +import com.android.mediproject.core.model.dur.durproduct.specialtyagegroup.DurProductSpecialtyAgeGroupTabooResponse import retrofit2.Response import retrofit2.http.GET import retrofit2.http.Query @@ -35,11 +35,11 @@ interface DurProductInfoNetworkApi { @GET(value = "DURPrdlstInfoService02/getDurPrdlstInfoList2") suspend fun getDurProductList( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("pageNo") pageNo: Int = DATA_GO_KR_PAGE_NO, @Query("itemName") itemName: String?, @Query("itemSeq") itemSeq: String?, @Query("type") type: String = JSON, - @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_ROW_SIZE, ): Response /** @@ -54,13 +54,13 @@ interface DurProductInfoNetworkApi { @GET(value = "DURPrdlstInfoService02/getOdsnAtentInfoList2") suspend fun getSeniorCaution( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("pageNo") pageNo: Int = DATA_GO_KR_PAGE_NO, @Query("typeName") typeName: String = "노인주의", @Query("itemName") itemName: String?, @Query("ingrCode") ingrCode: String?, @Query("itemSeq") itemSeq: String?, @Query("type") type: String = JSON, - @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_ROW_SIZE, ): Response /** @@ -74,13 +74,13 @@ interface DurProductInfoNetworkApi { @GET(value = "DURPrdlstInfoService02/getSeobangjeongPartitnAtentInfoList2") suspend fun getExReleaseTableSplitAttentionInfo( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("pageNo") pageNo: Int = DATA_GO_KR_PAGE_NO, @Query("itemName") itemName: String?, @Query("entpName") entpName: String?, @Query("typeName") typeName: String?, @Query("itemSeq") itemSeq: String?, @Query("type") type: String = JSON, - @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_ROW_SIZE, ): Response /** @@ -94,13 +94,13 @@ interface DurProductInfoNetworkApi { @GET(value = "DURPrdlstInfoService02/getEfcyDplctInfoList2") suspend fun getEfficacyGroupDuplicationInfo( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("pageNo") pageNo: Int = DATA_GO_KR_PAGE_NO, @Query("itemName") itemName: String?, @Query("ingrCode") ingrCode: String?, @Query("typeName") typeName: String?, @Query("itemSeq") itemSeq: String?, @Query("type") type: String = JSON, - @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_ROW_SIZE, ): Response /** @@ -115,13 +115,13 @@ interface DurProductInfoNetworkApi { @GET(value = "DURPrdlstInfoService02/getMdctnPdAtentInfoList2") suspend fun getDosingCautionInfo( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("pageNo") pageNo: Int = DATA_GO_KR_PAGE_NO, @Query("itemName") itemName: String?, @Query("ingrCode") ingrCode: String?, @Query("typeName") typeName: String?, @Query("itemSeq") itemSeq: String?, @Query("type") type: String = JSON, - @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_ROW_SIZE, ): Response /** @@ -136,13 +136,13 @@ interface DurProductInfoNetworkApi { @GET(value = "DURPrdlstInfoService02/getCpctyAtentInfoList2") suspend fun getCapacityAttentionInfo( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("pageNo") pageNo: Int = DATA_GO_KR_PAGE_NO, @Query("itemName") itemName: String?, @Query("ingrCode") ingrCode: String?, @Query("typeName") typeName: String?, @Query("itemSeq") itemSeq: String?, @Query("type") type: String = JSON, - @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_ROW_SIZE, ): Response /** @@ -157,13 +157,13 @@ interface DurProductInfoNetworkApi { @GET(value = "DURPrdlstInfoService02/getPwnmTabooInfoList2") suspend fun getPregnantWomanTabooInfo( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("pageNo") pageNo: Int = DATA_GO_KR_PAGE_NO, @Query("itemName") itemName: String?, @Query("ingrCode") ingrCode: String?, @Query("typeName") typeName: String?, @Query("itemSeq") itemSeq: String?, @Query("type") type: String = JSON, - @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_ROW_SIZE, ): Response /** @@ -178,13 +178,13 @@ interface DurProductInfoNetworkApi { @GET(value = "DURPrdlstInfoService02/getSpcifyAgrdeTabooInfoList2") suspend fun getSpecialtyAgeGroupTabooInfo( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("pageNo") pageNo: Int = DATA_GO_KR_PAGE_NO, @Query("itemName") itemName: String?, @Query("ingrCode") ingrCode: String?, @Query("typeName") typeName: String?, @Query("itemSeq") itemSeq: String?, @Query("type") type: String = JSON, - @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_ROW_SIZE, ): Response /** @@ -199,12 +199,12 @@ interface DurProductInfoNetworkApi { @GET(value = "DURPrdlstInfoService02/getUsjntTabooInfoList02") suspend fun getCombinationTabooInfo( @Query("serviceKey", encoded = true) serviceKey: String = BuildConfig.DATA_GO_KR_SERVICE_KEY, - @Query("pageNo") pageNo: Int = DATA_GO_KR_DEFAULT_PAGE_NO, + @Query("pageNo") pageNo: Int = DATA_GO_KR_PAGE_NO, @Query("itemName") itemName: String?, @Query("ingrCode") ingrCode: String?, @Query("typeName") typeName: String?, @Query("itemSeq") itemSeq: String?, @Query("type") type: String = JSON, - @Query("numOfRows") numOfRows: Int = DATA_GO_KR_DEFAULT_ROW_SIZE, + @Query("numOfRows") numOfRows: Int = DATA_GO_KR_ROW_SIZE, ): Response } diff --git a/core/network/src/main/java/com/android/mediproject/core/network/tokens/TokenRequestInterceptor.kt b/core/network/src/main/java/com/android/mediproject/core/network/tokens/TokenRequestInterceptor.kt index c41b6afbb..57a715daf 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/tokens/TokenRequestInterceptor.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/tokens/TokenRequestInterceptor.kt @@ -1,7 +1,7 @@ package com.android.mediproject.core.network.tokens import android.util.Log -import com.android.mediproject.core.model.remote.token.TokenState +import com.android.mediproject.core.model.token.TokenState import okhttp3.Interceptor import okhttp3.Response import javax.inject.Inject diff --git a/core/network/src/main/java/com/android/mediproject/core/network/tokens/TokenServer.kt b/core/network/src/main/java/com/android/mediproject/core/network/tokens/TokenServer.kt index bfdaed1fd..416a3dc0d 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/tokens/TokenServer.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/tokens/TokenServer.kt @@ -1,7 +1,7 @@ package com.android.mediproject.core.network.tokens -import com.android.mediproject.core.model.remote.token.CurrentTokens -import com.android.mediproject.core.model.remote.token.TokenState +import com.android.mediproject.core.model.token.CurrentTokens +import com.android.mediproject.core.model.token.TokenState import com.android.mediproject.core.network.datasource.tokens.NewTokens import java.time.LocalDateTime diff --git a/core/network/src/main/java/com/android/mediproject/core/network/tokens/TokenServerImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/tokens/TokenServerImpl.kt index 0b7d1ba5e..aed2b3479 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/tokens/TokenServerImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/tokens/TokenServerImpl.kt @@ -4,9 +4,9 @@ import android.util.Log import androidx.datastore.core.DataStore import com.android.mediproject.core.common.util.AesCoder import com.android.mediproject.core.datastore.SavedToken -import com.android.mediproject.core.model.remote.token.CurrentTokens -import com.android.mediproject.core.model.remote.token.RequestBehavior -import com.android.mediproject.core.model.remote.token.TokenState +import com.android.mediproject.core.model.token.CurrentTokens +import com.android.mediproject.core.model.token.RequestBehavior +import com.android.mediproject.core.model.token.TokenState import com.android.mediproject.core.network.datasource.tokens.NewTokens import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.Dispatchers @@ -154,7 +154,7 @@ internal class TokenServerImpl @Inject constructor( _tokenState = TokenState.Empty _refreshTokenExpiresIn = null _accessTokenExpiresIn = null - + tokenDataStore.updateData { it.toBuilder().clear().build() } diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts index ed31618f6..70620fca5 100644 --- a/core/ui/build.gradle.kts +++ b/core/ui/build.gradle.kts @@ -4,10 +4,11 @@ plugins { android { namespace = "com.android.mediproject.core.ui" -} -hilt { - enableAggregatingTask = true + hilt { + enableAggregatingTask = true + } + } dependencies { @@ -23,4 +24,4 @@ dependencies { kapt(libs.bundles.glides.kapt) -} \ No newline at end of file +} diff --git a/core/ui/src/main/java/com/android/mediproject/core/ui/base/view/LoadStateView.kt b/core/ui/src/main/java/com/android/mediproject/core/ui/base/view/LoadStateView.kt index 3c89a0585..9bfd7aad7 100644 --- a/core/ui/src/main/java/com/android/mediproject/core/ui/base/view/LoadStateView.kt +++ b/core/ui/src/main/java/com/android/mediproject/core/ui/base/view/LoadStateView.kt @@ -5,7 +5,7 @@ import android.widget.Button import android.widget.TextView import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.RecyclerView -import com.android.mediproject.core.common.uiutil.dpToPx +import com.android.mediproject.core.common.util.dpToPx import com.android.mediproject.core.ui.R import com.google.android.material.progressindicator.CircularProgressIndicator @@ -13,8 +13,8 @@ class LoadStateView(context: Context, onRetry: () -> Unit) : ConstraintLayout(co init { - val horizontalPadding = 24.dpToPx(context) - val verticalPadding = 12.dpToPx(context) + val horizontalPadding = 24.dpToPx() + val verticalPadding = 12.dpToPx() setPadding(horizontalPadding, verticalPadding, horizontalPadding, verticalPadding) @@ -34,7 +34,7 @@ class LoadStateView(context: Context, onRetry: () -> Unit) : ConstraintLayout(co it.topToBottom = android.R.id.progress it.startToStart = LayoutParams.PARENT_ID it.endToEnd = LayoutParams.PARENT_ID - it.setMargins(0, 16.dpToPx(context), 0, 0) + it.setMargins(0, 16.dpToPx(), 0, 0) } addView(textView) @@ -46,7 +46,7 @@ class LoadStateView(context: Context, onRetry: () -> Unit) : ConstraintLayout(co it.topToBottom = android.R.id.text1 it.startToStart = LayoutParams.PARENT_ID it.endToEnd = LayoutParams.PARENT_ID - it.setMargins(0, 8.dpToPx(context), 0, 0) + it.setMargins(0, 8.dpToPx(), 0, 0) } btn.text = context.getString(R.string.retryText) setOnClickListener { @@ -96,4 +96,4 @@ class LoadStateViewHolder(context: Context, onRetry: () -> Unit) : RecyclerView. interface LoadStateListener { fun setLoadingState(state: LoadingState) -} \ No newline at end of file +} diff --git a/feature/camera/build.gradle.kts b/feature/camera/build.gradle.kts index 8ad4a9a6b..7a28bc266 100644 --- a/feature/camera/build.gradle.kts +++ b/feature/camera/build.gradle.kts @@ -7,6 +7,11 @@ plugins { android { namespace = "com.android.mediproject.feature.camera" + hilt { + enableAggregatingTask = true + } + + androidResources { noCompress += listOf("tflite") } @@ -36,9 +41,7 @@ android { } -hilt { - enableAggregatingTask = true -} + dependencies { implementation(project(":core:ui")) diff --git a/feature/camera/src/main/java/com/android/mediproject/feature/camera/MedicinesDetectorFragment.kt b/feature/camera/src/main/java/com/android/mediproject/feature/camera/MedicinesDetectorFragment.kt index 2b4bd4295..bf661b082 100644 --- a/feature/camera/src/main/java/com/android/mediproject/feature/camera/MedicinesDetectorFragment.kt +++ b/feature/camera/src/main/java/com/android/mediproject/feature/camera/MedicinesDetectorFragment.kt @@ -11,8 +11,8 @@ import androidx.navigation.NavOptions import androidx.navigation.fragment.findNavController import androidx.navigation.navGraphViewModels import com.android.mediproject.core.common.dialog.LoadingDialog -import com.android.mediproject.core.common.uiutil.SystemBarController -import com.android.mediproject.core.common.uiutil.SystemBarStyler +import com.android.mediproject.core.common.util.SystemBarController +import com.android.mediproject.core.common.util.SystemBarStyler import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.camera.databinding.FragmentMedicinesDetectorBinding import com.android.mediproject.feature.camera.tflite.CameraHelper diff --git a/feature/camera/src/main/java/com/android/mediproject/feature/camera/imagedialog/DetectedImageFragment.kt b/feature/camera/src/main/java/com/android/mediproject/feature/camera/imagedialog/DetectedImageFragment.kt index dc3679c82..925e8c289 100644 --- a/feature/camera/src/main/java/com/android/mediproject/feature/camera/imagedialog/DetectedImageFragment.kt +++ b/feature/camera/src/main/java/com/android/mediproject/feature/camera/imagedialog/DetectedImageFragment.kt @@ -9,8 +9,8 @@ import android.view.ViewGroup import androidx.core.view.WindowCompat import androidx.fragment.app.DialogFragment import androidx.navigation.navGraphViewModels -import com.android.mediproject.core.common.uiutil.SystemBarController -import com.android.mediproject.core.common.uiutil.SystemBarStyler +import com.android.mediproject.core.common.util.SystemBarController +import com.android.mediproject.core.common.util.SystemBarStyler import com.android.mediproject.feature.camera.InferenceState import com.android.mediproject.feature.camera.MedicinesDetectorViewModel import com.android.mediproject.feature.camera.R diff --git a/feature/comments/build.gradle.kts b/feature/comments/build.gradle.kts index 517da6dc5..6cdfcef32 100644 --- a/feature/comments/build.gradle.kts +++ b/feature/comments/build.gradle.kts @@ -4,12 +4,14 @@ plugins { android { namespace = "com.android.mediproject.feature.comments" -} -hilt { - enableAggregatingTask = true + hilt { + enableAggregatingTask = true + } + } + dependencies { implementation(project(":core:ui")) implementation(project(":core:common")) @@ -22,4 +24,4 @@ dependencies { implementation(libs.bundles.uiAndroidx) implementation(libs.androidx.paging.runtime) -} \ No newline at end of file +} diff --git a/feature/comments/src/main/java/com/android/mediproject/feature/comments/commentsofamedicine/CommentsAdapter.kt b/feature/comments/src/main/java/com/android/mediproject/feature/comments/commentsofamedicine/CommentsAdapter.kt index faa576adf..382201749 100644 --- a/feature/comments/src/main/java/com/android/mediproject/feature/comments/commentsofamedicine/CommentsAdapter.kt +++ b/feature/comments/src/main/java/com/android/mediproject/feature/comments/commentsofamedicine/CommentsAdapter.kt @@ -7,7 +7,7 @@ import androidx.core.view.isVisible import androidx.paging.PagingDataAdapter import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView -import com.android.mediproject.core.model.comments.CommentDto +import com.android.mediproject.core.model.comments.Comment import com.android.mediproject.core.ui.base.view.listfilter.MediPopupMenu import com.android.mediproject.feature.comments.R import com.android.mediproject.feature.comments.databinding.ItemViewCommentBinding @@ -15,12 +15,16 @@ import com.android.mediproject.feature.comments.databinding.ItemViewCommentEditB import com.android.mediproject.feature.comments.databinding.ItemViewReplyBinding -class CommentsAdapter : PagingDataAdapter(Diff) { +class CommentsAdapter : PagingDataAdapter(Diff) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = viewType.let { when (it) { - ViewType.COMMENT.ordinal -> CommentViewHolder(ItemViewCommentBinding.inflate(LayoutInflater.from(parent.context), - parent, - false)) + ViewType.COMMENT.ordinal -> CommentViewHolder( + ItemViewCommentBinding.inflate( + LayoutInflater.from(parent.context), + parent, + false, + ), + ) ViewType.REPLY.ordinal -> ReplyViewHolder(ItemViewReplyBinding.inflate(LayoutInflater.from(parent.context), parent, false)) @@ -86,11 +90,11 @@ class CommentsAdapter : PagingDataAdapter() { - override fun areItemsTheSame(oldItem: CommentDto, newItem: CommentDto): Boolean = oldItem.commentId == newItem.commentId + object Diff : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: Comment, newItem: Comment): Boolean = oldItem.commentId == newItem.commentId - override fun areContentsTheSame(oldItem: CommentDto, newItem: CommentDto): Boolean = oldItem == newItem + override fun areContentsTheSame(oldItem: Comment, newItem: Comment): Boolean = oldItem == newItem } /** @@ -204,4 +208,4 @@ class CommentsAdapter : PagingDataAdapter> = medicineBasicInfo.flatMapLatest { info -> + val comments: StateFlow> = medicineBasicInfo.flatMapLatest { info -> commentsUseCase.getCommentsForAMedicine(info.medicineIdInAws, myUserId.value).cachedIn(viewModelScope).mapLatest { pagingData -> val signedIn = accountState.value is AccountState.SignedIn pagingData.map { comment -> @@ -108,10 +108,14 @@ class MedicineCommentsViewModel @Inject constructor( */ private fun applyReplyComment(comment: String) { viewModelScope.launch { - commentsUseCase.applyNewComment(NewCommentParameter(medicineId = medicineBasicInfo.replayCache.last().medicineIdInAws.toString(), - userId = myUserId.value.toString(), - content = comment, - subOrdinationId = replyId.value.toString())).collectLatest { result -> + commentsUseCase.applyNewComment( + NewCommentParameter( + medicineId = medicineBasicInfo.replayCache.last().medicineIdInAws.toString(), + userId = myUserId.value.toString(), + content = comment, + subOrdinationId = replyId.value.toString(), + ), + ).collectLatest { result -> result.onSuccess { // 댓글 등록 성공 commentsUseCase.scrollChannel.send(Unit) @@ -128,10 +132,14 @@ class MedicineCommentsViewModel @Inject constructor( */ private fun applyNewComment(content: String) { viewModelScope.launch { - commentsUseCase.applyNewComment(NewCommentParameter(medicineId = medicineBasicInfo.replayCache.last().medicineIdInAws.toString(), - userId = myUserId.value.toString(), - content = content, - subOrdinationId = "0")).collectLatest { result -> + commentsUseCase.applyNewComment( + NewCommentParameter( + medicineId = medicineBasicInfo.replayCache.last().medicineIdInAws.toString(), + userId = myUserId.value.toString(), + content = content, + subOrdinationId = "0", + ), + ).collectLatest { result -> result.onSuccess { // 댓글 등록 성공 commentsUseCase.scrollChannel.send(Unit) @@ -146,13 +154,17 @@ class MedicineCommentsViewModel @Inject constructor( /** * 수정한 댓글(답글) 등록 * - * @param commentDto 수정한 댓글(답글) 정보 + * @param comment 수정한 댓글(답글) 정보 */ - private fun applyEditedComment(commentDto: CommentDto) { + private fun applyEditedComment(comment: Comment) { viewModelScope.launch { - commentsUseCase.applyEditedComment(EditCommentParameter(commentId = commentDto.commentId, - content = commentDto.content, - medicineId = medicineBasicInfo.replayCache.last().medicineIdInAws)).collectLatest { result -> + commentsUseCase.applyEditedComment( + EditCommentParameter( + commentId = comment.commentId, + content = comment.content, + medicineId = medicineBasicInfo.replayCache.last().medicineIdInAws, + ), + ).collectLatest { result -> result.onSuccess { // 댓글 수정 성공 _action.emit(COMPLETED_APPLY_EDITED_COMMENT(Result.success(Unit))) @@ -235,7 +247,7 @@ class MedicineCommentsViewModel @Inject constructor( * @param item 수정할 댓글의 정보 * @param position 수정할 댓글의 리스트 내 절대 위치 */ - private fun onClickedEdit(item: CommentDto, position: Int) { + private fun onClickedEdit(item: Comment, position: Int) { viewModelScope.launch { // 수정 상태 변경 item.isEditing = !item.isEditing diff --git a/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListAdapter.kt b/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListAdapter.kt index b394d1933..ccdc67f1a 100644 --- a/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListAdapter.kt +++ b/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListAdapter.kt @@ -5,7 +5,7 @@ import android.view.ViewGroup import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView -import com.android.mediproject.core.model.comments.MyCommentDto +import com.android.mediproject.core.model.comments.MyComment import com.android.mediproject.feature.comments.databinding.ItemMyCommentBinding class MyCommentsViewHolder( @@ -22,21 +22,21 @@ class MyCommentsViewHolder( } } - fun bind(myComment: MyCommentDto) { + fun bind(myComment: MyComment) { binding.myComment = myComment } } -class MyCommentsListAdapter : ListAdapter(diffUtil) { +class MyCommentsListAdapter : ListAdapter(diffUtil) { companion object { - val diffUtil = object : DiffUtil.ItemCallback() { - override fun areItemsTheSame(oldItem: MyCommentDto, newItem: MyCommentDto): Boolean { + val diffUtil = object : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: MyComment, newItem: MyComment): Boolean { return oldItem === newItem } - override fun areContentsTheSame(oldItem: MyCommentDto, newItem: MyCommentDto): Boolean { + override fun areContentsTheSame(oldItem: MyComment, newItem: MyComment): Boolean { return oldItem == newItem } } @@ -52,7 +52,7 @@ class MyCommentsListAdapter : ListAdapter(di holder.bind(getItem(position)) } - override fun submitList(list: MutableList?) { + override fun submitList(list: MutableList?) { super.submitList(list) } -} \ No newline at end of file +} diff --git a/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListDecoration.kt b/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListDecoration.kt index c21ba7671..a69bce519 100644 --- a/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListDecoration.kt +++ b/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListDecoration.kt @@ -4,19 +4,19 @@ import android.content.Context import android.graphics.Rect import android.view.View import androidx.recyclerview.widget.RecyclerView -import com.android.mediproject.core.common.uiutil.dpToPx +import com.android.mediproject.core.common.util.dpToPx -class MyCommentsListDecoration(private val context: Context) : RecyclerView.ItemDecoration(){ +class MyCommentsListDecoration(private val context: Context) : RecyclerView.ItemDecoration() { override fun getItemOffsets( outRect: Rect, view: View, parent: RecyclerView, - state: RecyclerView.State + state: RecyclerView.State, ) { super.getItemOffsets(outRect, view, parent, state) //좌,상,우,하 - outRect.set(0,dpToPx(context,15),0,dpToPx(context,15)) + outRect.set(0, 15.dpToPx(), 0, 15.dpToPx()) } -} \ No newline at end of file +} diff --git a/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListFragment.kt b/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListFragment.kt index 4bd4508ff..02efd63e3 100644 --- a/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListFragment.kt +++ b/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListFragment.kt @@ -5,12 +5,12 @@ import android.view.View import androidx.fragment.app.viewModels import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager -import com.android.mediproject.core.common.uiutil.SystemBarStyler -import com.android.mediproject.core.model.comments.MyCommentDto +import com.android.mediproject.core.common.util.SystemBarStyler +import com.android.mediproject.core.common.viewmodel.repeatOnStarted +import com.android.mediproject.core.model.comments.MyComment import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.comments.databinding.FragmentMyCommentsListBinding import dagger.hilt.android.AndroidEntryPoint -import com.android.mediproject.core.common.viewmodel.repeatOnStarted import javax.inject.Inject @AndroidEntryPoint @@ -62,7 +62,7 @@ class MyCommentsListFragment : BaseFragment log(comment.medicineName + "을 누르셨습니다.") }, - MyCommentDto( + MyComment( 12346, "코메키나", "저 같은 비염환자들한테 딱 입니다. 시험칠 때 필수...!!", diff --git a/feature/comments/src/main/java/com/android/mediproject/feature/comments/recentcommentlist/RecentCommentsAdapter.kt b/feature/comments/src/main/java/com/android/mediproject/feature/comments/recentcommentlist/RecentCommentsAdapter.kt index 0e3ea7a8a..52d11c5ff 100644 --- a/feature/comments/src/main/java/com/android/mediproject/feature/comments/recentcommentlist/RecentCommentsAdapter.kt +++ b/feature/comments/src/main/java/com/android/mediproject/feature/comments/recentcommentlist/RecentCommentsAdapter.kt @@ -4,15 +4,15 @@ import android.view.ViewGroup import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView -import com.android.mediproject.core.model.comments.CommentDto +import com.android.mediproject.core.model.comments.Comment import com.android.mediproject.core.ui.base.view.SimpleListItemView -class RecentCommentsAdapter : ListAdapter(AsyncDiffer) { +class RecentCommentsAdapter : ListAdapter(AsyncDiffer) { - class RecentCommentListViewHolder(private val view: SimpleListItemView) : RecyclerView.ViewHolder(view) { + class RecentCommentListViewHolder(private val view: SimpleListItemView) : RecyclerView.ViewHolder(view) { - private var item: CommentDto? = null + private var item: Comment? = null init { view.setOnItemClickListener { @@ -24,7 +24,7 @@ class RecentCommentsAdapter : ListAdapter() { - override fun areItemsTheSame(oldItem: CommentDto, newItem: CommentDto): Boolean { +object AsyncDiffer : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: Comment, newItem: Comment): Boolean { return oldItem.commentId == newItem.commentId } - override fun areContentsTheSame(oldItem: CommentDto, newItem: CommentDto): Boolean { + override fun areContentsTheSame(oldItem: Comment, newItem: Comment): Boolean { return oldItem == newItem } -} \ No newline at end of file +} diff --git a/feature/comments/src/main/res/layout/item_my_comment.xml b/feature/comments/src/main/res/layout/item_my_comment.xml index 33ee43c18..6d4f1ddf1 100644 --- a/feature/comments/src/main/res/layout/item_my_comment.xml +++ b/feature/comments/src/main/res/layout/item_my_comment.xml @@ -5,7 +5,7 @@ + type="com.android.mediproject.core.model.comments.MyComment" /> - \ No newline at end of file + diff --git a/feature/comments/src/main/res/layout/item_view_comment.xml b/feature/comments/src/main/res/layout/item_view_comment.xml index 567a45eb0..11810e0c7 100644 --- a/feature/comments/src/main/res/layout/item_view_comment.xml +++ b/feature/comments/src/main/res/layout/item_view_comment.xml @@ -5,7 +5,7 @@ + type="com.android.mediproject.core.model.comments.Comment" /> - \ No newline at end of file + diff --git a/feature/comments/src/main/res/layout/item_view_comment_edit.xml b/feature/comments/src/main/res/layout/item_view_comment_edit.xml index 8b0a78aba..37cd3f4bc 100644 --- a/feature/comments/src/main/res/layout/item_view_comment_edit.xml +++ b/feature/comments/src/main/res/layout/item_view_comment_edit.xml @@ -6,7 +6,7 @@ + type="com.android.mediproject.core.model.comments.Comment" /> @@ -104,4 +104,4 @@ - \ No newline at end of file + diff --git a/feature/etc/build.gradle.kts b/feature/etc/build.gradle.kts index 3b2fb1240..e83aa3d6d 100644 --- a/feature/etc/build.gradle.kts +++ b/feature/etc/build.gradle.kts @@ -4,12 +4,13 @@ plugins { android { namespace = "com.android.mediproject.feature.etc" -} -hilt { - enableAggregatingTask = true + hilt { + enableAggregatingTask = true + } } + dependencies { implementation(project(":core:ui")) implementation(project(":core:common")) @@ -19,4 +20,4 @@ dependencies { implementation(libs.bundles.materials) implementation(libs.bundles.uiAndroidx) -} \ No newline at end of file +} diff --git a/feature/etc/src/main/java/com/android/mediproject/feature/etc/EtcFragment.kt b/feature/etc/src/main/java/com/android/mediproject/feature/etc/EtcFragment.kt index a3f8b2e84..a6609bd1e 100644 --- a/feature/etc/src/main/java/com/android/mediproject/feature/etc/EtcFragment.kt +++ b/feature/etc/src/main/java/com/android/mediproject/feature/etc/EtcFragment.kt @@ -6,7 +6,7 @@ import android.os.Bundle import android.view.View import androidx.core.net.toUri import androidx.fragment.app.viewModels -import com.android.mediproject.core.common.uiutil.SystemBarStyler +import com.android.mediproject.core.common.util.SystemBarStyler import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.etc.databinding.FragmentEtcBinding import dagger.hilt.android.AndroidEntryPoint diff --git a/feature/favoritemedicine/build.gradle.kts b/feature/favoritemedicine/build.gradle.kts index c02856788..fd4a48952 100644 --- a/feature/favoritemedicine/build.gradle.kts +++ b/feature/favoritemedicine/build.gradle.kts @@ -5,12 +5,13 @@ plugins { android { namespace = "com.android.mediproject.feature.favoritemedicine" -} -hilt { - enableAggregatingTask = true + hilt { + enableAggregatingTask = true + } } + dependencies { implementation(project(":core:ui")) @@ -23,4 +24,4 @@ dependencies { implementation(libs.bundles.materials) implementation(libs.bundles.uiAndroidx) implementation(libs.android.flexbox) -} \ No newline at end of file +} diff --git a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/FavoriteMedicineFragment.kt b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/FavoriteMedicineFragment.kt index f0e891af8..ba532ab74 100644 --- a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/FavoriteMedicineFragment.kt +++ b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/FavoriteMedicineFragment.kt @@ -10,9 +10,9 @@ import android.view.ViewGroup import androidx.core.content.ContextCompat import androidx.fragment.app.viewModels import com.android.mediproject.core.common.viewmodel.repeatOnStarted -import com.android.mediproject.core.model.favoritemedicine.FavoriteMedicineDto -import com.android.mediproject.core.model.remote.token.CurrentTokens -import com.android.mediproject.core.model.remote.token.TokenState +import com.android.mediproject.core.model.favoritemedicine.FavoriteMedicine +import com.android.mediproject.core.model.token.CurrentTokens +import com.android.mediproject.core.model.token.TokenState import com.android.mediproject.core.ui.R import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.core.ui.base.view.ButtonChip @@ -64,7 +64,7 @@ class FavoriteMedicineFragment : } } - private fun setFavoriteMedicineList(medicineList: List) { + private fun setFavoriteMedicineList(medicineList: List) { clearFavoriteMedicineListView() if (checkMedicineListSize(medicineList)) { showFavorteMedicine(medicineList) @@ -75,11 +75,11 @@ class FavoriteMedicineFragment : private fun clearFavoriteMedicineListView() = binding.favoriteMedicineList.removeAllViews() - private fun checkMedicineListSize(medicineList: List): Boolean { + private fun checkMedicineListSize(medicineList: List): Boolean { return (medicineList.isNotEmpty()) } - private fun showFavorteMedicine(medicineList: List) { + private fun showFavorteMedicine(medicineList: List) { val horizontalSpace = resources.getDimension(R.dimen.dp_4).toInt() medicineList.forEach { medicine -> binding.favoriteMedicineList.addView( diff --git a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/FavoriteMedicineViewModel.kt b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/FavoriteMedicineViewModel.kt index a42fd2df1..565197bb0 100644 --- a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/FavoriteMedicineViewModel.kt +++ b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/FavoriteMedicineViewModel.kt @@ -5,9 +5,9 @@ import androidx.lifecycle.viewModelScope import com.android.mediproject.core.common.viewmodel.asEventFlow import com.android.mediproject.core.domain.GetFavoriteMedicineUseCase import com.android.mediproject.core.domain.GetTokenUseCase -import com.android.mediproject.core.model.favoritemedicine.FavoriteMedicineDto -import com.android.mediproject.core.model.remote.token.CurrentTokens -import com.android.mediproject.core.model.remote.token.TokenState +import com.android.mediproject.core.model.favoritemedicine.FavoriteMedicine +import com.android.mediproject.core.model.token.CurrentTokens +import com.android.mediproject.core.model.token.TokenState import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow @@ -34,7 +34,7 @@ class FavoriteMedicineViewModel @Inject constructor( object NavigateToFavoriteMedicineMore : FavoriteMedicineEvent() } - private val _favoriteMedicineList = MutableStateFlow>(listOf()) + private val _favoriteMedicineList = MutableStateFlow>(listOf()) val favoriteMedicineList get() = _favoriteMedicineList private val _token = MutableStateFlow>(TokenState.Empty) diff --git a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMedicineMoreFragment.kt b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMedicineMoreFragment.kt index 49d9e8fb4..135f95ff1 100644 --- a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMedicineMoreFragment.kt +++ b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMedicineMoreFragment.kt @@ -1,15 +1,14 @@ package com.android.mediproject.feature.favoritemedicine.favoritemedicinemore -import android.content.Context import android.os.Bundle import android.view.View import androidx.fragment.app.viewModels import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager -import com.android.mediproject.core.common.uiutil.SystemBarStyler -import com.android.mediproject.core.model.favoritemedicine.FavoriteMedicineMoreDto -import com.android.mediproject.core.model.remote.token.CurrentTokens -import com.android.mediproject.core.model.remote.token.TokenState +import com.android.mediproject.core.common.util.SystemBarStyler +import com.android.mediproject.core.model.favoritemedicine.FavoriteMedicineMoreInfo +import com.android.mediproject.core.model.token.CurrentTokens +import com.android.mediproject.core.model.token.TokenState import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.favoritemedicine.databinding.FragmentFavoriteMedicineMoreBinding import com.android.mediproject.feature.favoritemedicine.favoritemedicinemore.recyclerview.FavoriteMedcineMoreDecoration @@ -64,7 +63,7 @@ class FavoriteMedicineMoreFragment : addItemDecoration(DividerItemDecoration(requireContext(), 1)) } - private fun setFavoriteMedicineMoreList(medicineList: List) { + private fun setFavoriteMedicineMoreList(medicineList: List) { favoriteMedicineMoreAdapter.submitList(medicineList) } diff --git a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMedicineMoreViewModel.kt b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMedicineMoreViewModel.kt index 5b529fba5..5b5613ba2 100644 --- a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMedicineMoreViewModel.kt +++ b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMedicineMoreViewModel.kt @@ -3,9 +3,9 @@ package com.android.mediproject.feature.favoritemedicine.favoritemedicinemore import androidx.lifecycle.viewModelScope import com.android.mediproject.core.domain.GetFavoriteMedicineUseCase import com.android.mediproject.core.domain.GetTokenUseCase -import com.android.mediproject.core.model.favoritemedicine.FavoriteMedicineMoreDto -import com.android.mediproject.core.model.remote.token.CurrentTokens -import com.android.mediproject.core.model.remote.token.TokenState +import com.android.mediproject.core.model.favoritemedicine.FavoriteMedicineMoreInfo +import com.android.mediproject.core.model.token.CurrentTokens +import com.android.mediproject.core.model.token.TokenState import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow @@ -19,7 +19,7 @@ class FavoriteMedicineMoreViewModel @Inject constructor( private val getFavoriteMedicineUseCase: GetFavoriteMedicineUseCase, ) : BaseViewModel() { - private val _favoriteMedicineList = MutableStateFlow>(listOf()) + private val _favoriteMedicineList = MutableStateFlow>(listOf()) val favoriteMedicineList get() = _favoriteMedicineList private val _token = MutableStateFlow>(TokenState.Empty) diff --git a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMeidicneMoreAdapter.kt b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMeidicneMoreAdapter.kt index f5a3ea494..d67b7014c 100644 --- a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMeidicneMoreAdapter.kt +++ b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/FavoriteMeidicneMoreAdapter.kt @@ -5,32 +5,32 @@ import android.view.ViewGroup import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView -import com.android.mediproject.core.model.favoritemedicine.FavoriteMedicineMoreDto +import com.android.mediproject.core.model.favoritemedicine.FavoriteMedicineMoreInfo import com.android.mediproject.feature.favoritemedicine.databinding.ItemFavoriteMedicineBinding class FavoriteMedicineMoreViewHolder(private val binding: ItemFavoriteMedicineBinding) : RecyclerView.ViewHolder(binding.root) { - fun bind(moreInterestedMedicine: FavoriteMedicineMoreDto) { + fun bind(moreInterestedMedicine: FavoriteMedicineMoreInfo) { binding.item = moreInterestedMedicine } } class FavoriteMeidicneMoreAdapter : - ListAdapter(diffUtil) { + ListAdapter(diffUtil) { companion object { - val diffUtil = object : DiffUtil.ItemCallback() { + val diffUtil = object : DiffUtil.ItemCallback() { override fun areItemsTheSame( - oldItem: FavoriteMedicineMoreDto, - newItem: FavoriteMedicineMoreDto, + oldItem: FavoriteMedicineMoreInfo, + newItem: FavoriteMedicineMoreInfo, ): Boolean { return oldItem === newItem } override fun areContentsTheSame( - oldItem: FavoriteMedicineMoreDto, - newItem: FavoriteMedicineMoreDto, + oldItem: FavoriteMedicineMoreInfo, + newItem: FavoriteMedicineMoreInfo, ): Boolean { return oldItem == newItem } diff --git a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/recyclerview/FavoriteMedcineMoreDecoration.kt b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/recyclerview/FavoriteMedcineMoreDecoration.kt index f6a006621..0c41d7666 100644 --- a/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/recyclerview/FavoriteMedcineMoreDecoration.kt +++ b/feature/favoritemedicine/src/main/java/com/android/mediproject/feature/favoritemedicine/favoritemedicinemore/recyclerview/FavoriteMedcineMoreDecoration.kt @@ -4,18 +4,16 @@ import android.content.Context import android.graphics.Rect import android.view.View import androidx.recyclerview.widget.RecyclerView -import com.android.mediproject.core.common.uiutil.dpToPx +import com.android.mediproject.core.common.util.dpToPx -class FavoriteMedcineMoreDecoration(private val context : Context) : RecyclerView.ItemDecoration() { +class FavoriteMedcineMoreDecoration(private val context: Context) : RecyclerView.ItemDecoration() { override fun getItemOffsets( outRect: Rect, view: View, parent: RecyclerView, - state: RecyclerView.State + state: RecyclerView.State, ) { super.getItemOffsets(outRect, view, parent, state) - - outRect.set(0, dpToPx(context,10),0, dpToPx(context,10)) - + outRect.set(0, 10.dpToPx(), 0, 10.dpToPx()) } } diff --git a/feature/favoritemedicine/src/main/res/layout/item_favorite_medicine.xml b/feature/favoritemedicine/src/main/res/layout/item_favorite_medicine.xml index 3e5bc3e02..8b763da1a 100644 --- a/feature/favoritemedicine/src/main/res/layout/item_favorite_medicine.xml +++ b/feature/favoritemedicine/src/main/res/layout/item_favorite_medicine.xml @@ -6,7 +6,7 @@ + type="com.android.mediproject.core.model.favoritemedicine.FavoriteMedicineMoreInfo" /> - \ No newline at end of file + diff --git a/feature/home/build.gradle.kts b/feature/home/build.gradle.kts index 7578ed432..437722b59 100644 --- a/feature/home/build.gradle.kts +++ b/feature/home/build.gradle.kts @@ -4,12 +4,13 @@ plugins { android { namespace = "com.android.mediproject.feature.home" -} -hilt { - enableAggregatingTask = true + hilt { + enableAggregatingTask = true + } } + dependencies { implementation(project(":core:ui")) implementation(project(":core:common")) diff --git a/feature/home/src/main/java/com/android/mediproject/feature/home/HomeFragment.kt b/feature/home/src/main/java/com/android/mediproject/feature/home/HomeFragment.kt index d87176c07..5b90cd942 100644 --- a/feature/home/src/main/java/com/android/mediproject/feature/home/HomeFragment.kt +++ b/feature/home/src/main/java/com/android/mediproject/feature/home/HomeFragment.kt @@ -7,7 +7,7 @@ import androidx.core.os.bundleOf import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController import com.android.mediproject.core.common.mapper.MedicineInfoMapper -import com.android.mediproject.core.common.uiutil.SystemBarStyler +import com.android.mediproject.core.common.util.SystemBarStyler import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.comments.recentcommentlist.RecentCommentListFragment import com.android.mediproject.feature.home.databinding.FragmentHomeBinding diff --git a/feature/intro/build.gradle.kts b/feature/intro/build.gradle.kts index 44f147c29..fc360ea15 100644 --- a/feature/intro/build.gradle.kts +++ b/feature/intro/build.gradle.kts @@ -4,12 +4,13 @@ plugins { android { namespace = "com.android.mediproject.feature.intro" -} -hilt { - enableAggregatingTask = true + hilt { + enableAggregatingTask = true + } } + dependencies { implementation(project(":core:ui")) implementation(project(":core:common")) @@ -20,4 +21,4 @@ dependencies { implementation(libs.bundles.kotlins) implementation(libs.bundles.materials) implementation(libs.bundles.uiAndroidx) -} \ No newline at end of file +} diff --git a/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginFragment.kt b/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginFragment.kt index 03acb37e2..dc785a678 100644 --- a/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginFragment.kt +++ b/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginFragment.kt @@ -8,11 +8,11 @@ import androidx.navigation.NavOptions import com.android.mediproject.core.common.dialog.LoadingDialog import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers -import com.android.mediproject.core.common.uiutil.SystemBarController -import com.android.mediproject.core.common.uiutil.SystemBarStyler +import com.android.mediproject.core.common.util.SystemBarController +import com.android.mediproject.core.common.util.SystemBarStyler import com.android.mediproject.core.common.util.delayTextChangedCallback -import com.android.mediproject.core.model.local.navargs.TOHOME -import com.android.mediproject.core.model.local.navargs.TOMYPAGE +import com.android.mediproject.core.model.navargs.TOHOME +import com.android.mediproject.core.model.navargs.TOMYPAGE import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.intro.databinding.FragmentLoginBinding import dagger.hilt.android.AndroidEntryPoint diff --git a/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginViewModel.kt b/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginViewModel.kt index 0f4341010..a78186519 100644 --- a/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginViewModel.kt +++ b/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginViewModel.kt @@ -9,7 +9,7 @@ import com.android.mediproject.core.common.util.isPasswordValid import com.android.mediproject.core.common.viewmodel.MutableEventFlow import com.android.mediproject.core.common.viewmodel.asEventFlow import com.android.mediproject.core.domain.sign.SignUseCase -import com.android.mediproject.core.model.local.navargs.TOHOME +import com.android.mediproject.core.model.navargs.TOHOME import com.android.mediproject.core.model.requestparameters.LoginParameter import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel diff --git a/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpFragment.kt b/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpFragment.kt index b0bf393b7..c22eadfc0 100644 --- a/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpFragment.kt +++ b/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpFragment.kt @@ -8,10 +8,10 @@ import androidx.navigation.NavOptions import com.android.mediproject.core.common.dialog.LoadingDialog import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers -import com.android.mediproject.core.common.uiutil.SystemBarStyler +import com.android.mediproject.core.common.util.SystemBarStyler import com.android.mediproject.core.common.util.delayTextChangedCallback -import com.android.mediproject.core.model.local.navargs.TOHOME -import com.android.mediproject.core.model.local.navargs.TOMYPAGE +import com.android.mediproject.core.model.navargs.TOHOME +import com.android.mediproject.core.model.navargs.TOMYPAGE import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.intro.databinding.FragmentSignUpBinding import dagger.hilt.android.AndroidEntryPoint diff --git a/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpViewModel.kt b/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpViewModel.kt index c0976c9e6..cda265c27 100644 --- a/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpViewModel.kt +++ b/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpViewModel.kt @@ -8,7 +8,7 @@ import com.android.mediproject.core.common.network.MediDispatchers import com.android.mediproject.core.common.util.isEmailValid import com.android.mediproject.core.common.util.isPasswordValid import com.android.mediproject.core.domain.sign.SignUseCase -import com.android.mediproject.core.model.local.navargs.TOHOME +import com.android.mediproject.core.model.navargs.TOHOME import com.android.mediproject.core.model.requestparameters.SignUpParameter import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel diff --git a/feature/medicine/build.gradle.kts b/feature/medicine/build.gradle.kts index 24160429e..10684b151 100644 --- a/feature/medicine/build.gradle.kts +++ b/feature/medicine/build.gradle.kts @@ -5,10 +5,10 @@ plugins { android { namespace = "com.android.mediproject.feature.medicine" -} -hilt { - enableAggregatingTask = true + hilt { + enableAggregatingTask = true + } } dependencies { diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/comments/HostCommentsFragment.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/comments/HostCommentsFragment.kt index 7e2fb733e..69c76acaa 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/comments/HostCommentsFragment.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/comments/HostCommentsFragment.kt @@ -9,7 +9,7 @@ import androidx.fragment.app.viewModels import androidx.navigation.fragment.NavHostFragment import com.android.mediproject.core.common.util.setArguments import com.android.mediproject.core.common.viewmodel.UiState -import com.android.mediproject.core.model.local.navargs.MedicineBasicInfoArgs +import com.android.mediproject.core.model.navargs.MedicineBasicInfoArgs import com.android.mediproject.feature.medicine.databinding.FragmentCommentsHostBinding import com.android.mediproject.feature.medicine.main.MedicineInfoViewModel import dagger.hilt.android.AndroidEntryPoint diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/granule/GranuleInfoViewModel.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/granule/GranuleInfoViewModel.kt index 93df5027a..78ba30b78 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/granule/GranuleInfoViewModel.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/granule/GranuleInfoViewModel.kt @@ -8,7 +8,7 @@ import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers import com.android.mediproject.core.common.viewmodel.UiState import com.android.mediproject.core.domain.GetGranuleIdentificationUseCase -import com.android.mediproject.core.model.remote.granule.GranuleIdentificationInfoDto +import com.android.mediproject.core.model.granule.GranuleIdentificationInfo import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineDispatcher @@ -22,14 +22,16 @@ import javax.inject.Inject class GranuleInfoViewModel @Inject constructor( private val medicineInfoMapper: MedicineInfoMapper, private val getGranuleIdentificationUseCase: GetGranuleIdentificationUseCase, - @Dispatcher(MediDispatchers.Default) private val defaultDispatcher: CoroutineDispatcher) : BaseViewModel() { + @Dispatcher(MediDispatchers.Default) private val defaultDispatcher: CoroutineDispatcher, +) : BaseViewModel() { - private val granuleIdentification = MutableStateFlow>(UiState.Loading) + private val granuleIdentification = MutableStateFlow>(UiState.Loading) private val _granuleTextTags = MutableStateFlow(null) val granuleTextTags get() = _granuleTextTags.asStateFlow() fun getGranuleIdentificationInfo( - itemName: String?, entpName: String?, itemSeq: String?, context: Context) = viewModelScope.launch(defaultDispatcher) { + itemName: String?, entpName: String?, itemSeq: String?, context: Context, + ) = viewModelScope.launch(defaultDispatcher) { granuleIdentification.value = UiState.Loading getGranuleIdentificationUseCase(itemName, entpName, itemSeq).collectLatest { result -> result.onSuccess { @@ -41,4 +43,4 @@ class GranuleInfoViewModel @Inject constructor( } } -} \ No newline at end of file +} diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/main/MedicineInfoFragment.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/main/MedicineInfoFragment.kt index 9a59a2523..31a7268a5 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/main/MedicineInfoFragment.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/main/MedicineInfoFragment.kt @@ -6,12 +6,12 @@ import android.os.Bundle import android.view.View import androidx.fragment.app.viewModels import com.android.mediproject.core.common.dialog.LoadingDialog -import com.android.mediproject.core.common.uiutil.SystemBarColorAnalyzer -import com.android.mediproject.core.common.uiutil.SystemBarController -import com.android.mediproject.core.common.uiutil.SystemBarStyler +import com.android.mediproject.core.common.util.SystemBarColorAnalyzer +import com.android.mediproject.core.common.util.SystemBarController +import com.android.mediproject.core.common.util.SystemBarStyler import com.android.mediproject.core.common.util.navArgs import com.android.mediproject.core.common.viewmodel.UiState -import com.android.mediproject.core.model.local.navargs.MedicineInfoArgs +import com.android.mediproject.core.model.navargs.MedicineInfoArgs import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.medicine.R import com.android.mediproject.feature.medicine.databinding.FragmentMedicineInfoBinding diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/main/MedicineInfoViewModel.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/main/MedicineInfoViewModel.kt index 533979c7a..4c0ddada3 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/main/MedicineInfoViewModel.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/main/MedicineInfoViewModel.kt @@ -9,7 +9,7 @@ import com.android.mediproject.core.common.viewmodel.UiState import com.android.mediproject.core.domain.CommentsUseCase import com.android.mediproject.core.domain.GetFavoriteMedicineUseCase import com.android.mediproject.core.domain.GetMedicineDetailsUseCase -import com.android.mediproject.core.model.local.navargs.MedicineInfoArgs +import com.android.mediproject.core.model.navargs.MedicineInfoArgs import com.android.mediproject.core.model.medicine.medicinedetailinfo.MedicineDetail import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel diff --git a/feature/medicine/src/main/res/layout/fragment_medicine_info.xml b/feature/medicine/src/main/res/layout/fragment_medicine_info.xml index bdabed3b0..3bcf9edd9 100644 --- a/feature/medicine/src/main/res/layout/fragment_medicine_info.xml +++ b/feature/medicine/src/main/res/layout/fragment_medicine_info.xml @@ -6,7 +6,7 @@ + type="com.android.mediproject.core.model.navargs.MedicineInfoArgs" /> ): Boolean { + private fun isCommentListNotEmpty(commentList: List): Boolean { return (commentList.isNotEmpty()) } @@ -273,7 +273,7 @@ class MyPageFragment : myCommentsListHeaderView.setExpandVisiblity(false) } - private fun showCommentList(myCommentList: List) = binding.apply { + private fun showCommentList(myCommentList: List) = binding.apply { setShowCommentListVisible() myCommentListAdapter.submitList(myCommentList) } diff --git a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageMyCommentAdapter.kt b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageMyCommentAdapter.kt index f61663c63..b72680581 100644 --- a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageMyCommentAdapter.kt +++ b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageMyCommentAdapter.kt @@ -5,24 +5,24 @@ import android.view.ViewGroup import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView -import com.android.mediproject.core.model.comments.MyCommentDto +import com.android.mediproject.core.model.comments.MyComment import com.android.mediproject.feature.mypage.databinding.ItemMypageMycommentBinding class MyCommentListViewHolder(private val binding: ItemMypageMycommentBinding) : RecyclerView.ViewHolder(binding.root) { - fun bind(myCommentDto: MyCommentDto) { - binding.myCommentDto = myCommentDto + fun bind(myComment: MyComment) { + binding.myCommentDto = myComment } } -class MyPageMyCommentAdapter : ListAdapter(object : - DiffUtil.ItemCallback() { - override fun areItemsTheSame(oldItem: MyCommentDto, newItem: MyCommentDto): Boolean { +class MyPageMyCommentAdapter : ListAdapter(object : + DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: MyComment, newItem: MyComment): Boolean { return oldItem.commentId == newItem.commentId } - override fun areContentsTheSame(oldItem: MyCommentDto, newItem: MyCommentDto): Boolean { + override fun areContentsTheSame(oldItem: MyComment, newItem: MyComment): Boolean { return oldItem == newItem } }) { diff --git a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageMyCommentDecoraion.kt b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageMyCommentDecoraion.kt index c48ecc71f..5b6ab8e4b 100644 --- a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageMyCommentDecoraion.kt +++ b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageMyCommentDecoraion.kt @@ -4,19 +4,19 @@ import android.content.Context import android.graphics.Rect import android.view.View import androidx.recyclerview.widget.RecyclerView -import com.android.mediproject.core.common.uiutil.dpToPx +import com.android.mediproject.core.common.util.dpToPx -class MyPageMyCommentDecoraion(private val context : Context) : RecyclerView.ItemDecoration() { +class MyPageMyCommentDecoraion(private val context: Context) : RecyclerView.ItemDecoration() { override fun getItemOffsets( outRect: Rect, view: View, parent: RecyclerView, - state: RecyclerView.State + state: RecyclerView.State, ) { super.getItemOffsets(outRect, view, parent, state) //좌,상,우,하 - outRect.set(0, 0,0, dpToPx(context,10)) + outRect.set(0, 0, 0, 10.dpToPx()) } -} \ No newline at end of file +} diff --git a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageViewModel.kt b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageViewModel.kt index f37bcbf1f..7ca6bc45d 100644 --- a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageViewModel.kt +++ b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageViewModel.kt @@ -6,10 +6,10 @@ import com.android.mediproject.core.common.viewmodel.asEventFlow import com.android.mediproject.core.domain.GetTokenUseCase import com.android.mediproject.core.domain.sign.SignUseCase import com.android.mediproject.core.domain.user.UserUseCase -import com.android.mediproject.core.model.comments.MyCommentDto -import com.android.mediproject.core.model.remote.token.CurrentTokens -import com.android.mediproject.core.model.remote.token.TokenState -import com.android.mediproject.core.model.user.UserDto +import com.android.mediproject.core.model.comments.MyComment +import com.android.mediproject.core.model.token.CurrentTokens +import com.android.mediproject.core.model.token.TokenState +import com.android.mediproject.core.model.user.User import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.channels.BufferOverflow @@ -52,12 +52,12 @@ class MyPageViewModel @Inject constructor( fun loadTokens() = viewModelScope.launch { getTokenUseCase().collect { _token.value = it } } - private val _user = MutableStateFlow(UserDto("기본값")) + private val _user = MutableStateFlow(User("기본값")) val user get() = _user.asStateFlow() fun loadUser() = viewModelScope.launch { userUseCase().collect { _user.value = it } } - private val _myCommentsList = MutableSharedFlow>( + private val _myCommentsList = MutableSharedFlow>( replay = 1, extraBufferCapacity = 1, onBufferOverflow = BufferOverflow.DROP_OLDEST, @@ -80,28 +80,28 @@ class MyPageViewModel @Inject constructor( fun signOut() = viewModelScope.launch { signUseCase.signOut() } val dummy = listOf( - MyCommentDto(20230528, "타이레놀", "아따 좋습니다 좋아요", System.currentTimeMillis().toString(), 3), - MyCommentDto( + MyComment(20230528, "타이레놀", "아따 좋습니다 좋아요", System.currentTimeMillis().toString(), 3), + MyComment( 20230529, "가나다라마바사", "이건 실제로 있는 약일까요?", System.currentTimeMillis().toString(), 0, ), - MyCommentDto( + MyComment( 20230530, "코메키나", "이건 가까운 약국에서 구할 수 있어요. 하여튼 구할 수 있어요.", System.currentTimeMillis().toString(), 2, ), - MyCommentDto( + MyComment( 20230528, "가나다라마바사", "이건 실제로 있는 약일까요?", System.currentTimeMillis().toString(), 0, ), - MyCommentDto(20230531, "아자차카", "이건 확실히 없을 것 같네요.", System.currentTimeMillis().toString(), 2), + MyComment(20230531, "아자차카", "이건 확실히 없을 것 같네요.", System.currentTimeMillis().toString(), 2), ) } diff --git a/feature/mypage/src/main/res/layout/fragment_my_page.xml b/feature/mypage/src/main/res/layout/fragment_my_page.xml index 1c93dc033..8f4797024 100644 --- a/feature/mypage/src/main/res/layout/fragment_my_page.xml +++ b/feature/mypage/src/main/res/layout/fragment_my_page.xml @@ -11,7 +11,7 @@ + type="com.android.mediproject.core.model.user.User" /> + type="com.android.mediproject.core.model.comments.MyComment" /> - \ No newline at end of file + diff --git a/feature/news/build.gradle.kts b/feature/news/build.gradle.kts index 7471b9dfa..6d4a639e5 100644 --- a/feature/news/build.gradle.kts +++ b/feature/news/build.gradle.kts @@ -5,12 +5,13 @@ plugins { android { namespace = "com.android.mediproject.feature.news" -} -hilt { - enableAggregatingTask = true + hilt { + enableAggregatingTask = true + } } + dependencies { implementation(project(":core:ui")) implementation(project(":core:common")) diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/NewsFragment.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/NewsFragment.kt index 2e7e3e816..1a3d95b1a 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/NewsFragment.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/NewsFragment.kt @@ -3,9 +3,9 @@ package com.android.mediproject.feature.news import android.os.Bundle import android.view.View import androidx.fragment.app.viewModels -import com.android.mediproject.core.common.uiutil.SystemBarStyler +import com.android.mediproject.core.common.util.SystemBarStyler import com.android.mediproject.core.common.util.navArgs -import com.android.mediproject.core.model.local.navargs.RecallDisposalArgs +import com.android.mediproject.core.model.navargs.RecallDisposalArgs import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.news.databinding.FragmentNewsBinding import dagger.hilt.android.AndroidEntryPoint diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/NewsScreen.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/NewsScreen.kt index f6ba7084f..dc36fb3a3 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/NewsScreen.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/NewsScreen.kt @@ -32,7 +32,7 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import androidx.navigation.navArgument -import com.android.mediproject.core.model.local.navargs.RecallDisposalArgs +import com.android.mediproject.core.model.navargs.RecallDisposalArgs import com.android.mediproject.feature.news.adminaction.AdminActionScreen import com.android.mediproject.feature.news.adminaction.DetailAdminActionScreen import com.android.mediproject.feature.news.recallsuspension.DetailRecallDisposalScreen @@ -155,4 +155,4 @@ fun CustomFilterChip( disabledLabelColor = Color.Blue ), ) -} \ No newline at end of file +} diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/adminaction/AdminActionScreen.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/adminaction/AdminActionScreen.kt index 538bd8b9b..c0bddf9eb 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/adminaction/AdminActionScreen.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/adminaction/AdminActionScreen.kt @@ -9,7 +9,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material3.Divider -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text @@ -27,7 +26,7 @@ import androidx.paging.LoadState import androidx.paging.compose.collectAsLazyPagingItems import androidx.paging.compose.itemContentType import androidx.paging.compose.itemKey -import com.android.mediproject.core.model.remote.adminaction.AdminActionListItemDto +import com.android.mediproject.core.model.adminaction.AdminAction import com.android.mediproject.core.ui.compose.CenterProgressIndicator import java.time.format.DateTimeFormatter @@ -76,14 +75,14 @@ fun AdminActionScreen( * 행정 처분 목록 아이템 */ @Composable -fun ListItem(adminActionListItemDto: AdminActionListItemDto) { +fun ListItem(adminAction: AdminAction) { Surface( modifier = Modifier .fillMaxWidth() .padding(horizontal = 24.dp, vertical = 20.dp), shape = RectangleShape, onClick = { - adminActionListItemDto.onClick?.invoke() + adminAction.onClick?.invoke() }, ) { Column( @@ -94,7 +93,7 @@ fun ListItem(adminActionListItemDto: AdminActionListItemDto) { verticalAlignment = CenterVertically, ) { Text( - text = adminActionListItemDto.entpName, + text = adminAction.entpName, style = MaterialTheme.typography.titleMedium, fontSize = 14.sp, color = Color.Black, @@ -105,7 +104,7 @@ fun ListItem(adminActionListItemDto: AdminActionListItemDto) { maxLines = 1, ) Text( - text = adminActionListItemDto.lastSettleDate.format(dateFormat), + text = adminAction.lastSettleDate.format(dateFormat), fontSize = 12.sp, modifier = Modifier.align(CenterVertically), color = Color.Gray, @@ -114,11 +113,11 @@ fun ListItem(adminActionListItemDto: AdminActionListItemDto) { } Spacer(modifier = Modifier.height(8.dp)) Text( - text = adminActionListItemDto.violation, fontSize = 12.sp, color = Color.Gray, maxLines = 1, + text = adminAction.violation, fontSize = 12.sp, color = Color.Gray, maxLines = 1, ) Spacer(modifier = Modifier.height(4.dp)) Text( - text = adminActionListItemDto.disposition, fontSize = 12.sp, color = Color.Gray, maxLines = 1, + text = adminAction.disposition, fontSize = 12.sp, color = Color.Gray, maxLines = 1, ) } } diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/adminaction/AdminActionViewModel.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/adminaction/AdminActionViewModel.kt index 8a90fa630..897e9e58a 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/adminaction/AdminActionViewModel.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/adminaction/AdminActionViewModel.kt @@ -9,7 +9,7 @@ import androidx.paging.cachedIn import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers import com.android.mediproject.core.domain.GetAdminActionInfoUseCase -import com.android.mediproject.core.model.remote.adminaction.AdminActionListItemDto +import com.android.mediproject.core.model.adminaction.AdminAction import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineDispatcher @@ -29,7 +29,7 @@ class AdminActionViewModel @Inject constructor( @Dispatcher(MediDispatchers.Default) private val defaultDispatcher: CoroutineDispatcher, ) : BaseViewModel() { - private lateinit var _adminActionList: Flow> + private lateinit var _adminActionList: Flow> val adminActionList by lazy { _adminActionList } private val clickedItemPosition = MutableStateFlow(-1) @@ -47,38 +47,40 @@ class AdminActionViewModel @Inject constructor( clickedItemPosition.value = position } - private val _clickedItem = MutableStateFlow(null) + private val _clickedItem = MutableStateFlow(null) val clickedItem get() = _clickedItem.asStateFlow() fun getClickedItem() { viewModelScope.launch(defaultDispatcher) { adminActionList.collectLatest { - WeakReference(object : PagingDataDiffer( - differCallback = object : DifferCallback { - override fun onChanged(position: Int, count: Int) { + WeakReference( + object : PagingDataDiffer( + differCallback = object : DifferCallback { + override fun onChanged(position: Int, count: Int) { - } + } - override fun onInserted(position: Int, count: Int) { - } + override fun onInserted(position: Int, count: Int) { + } - override fun onRemoved(position: Int, count: Int) { - } + override fun onRemoved(position: Int, count: Int) { + } + }, + mainContext = defaultDispatcher, + cachedPagingData = it, + ) { + override suspend fun presentNewList( + previousList: NullPaddedList, + newList: NullPaddedList, + lastAccessedIndex: Int, + onListPresentable: () -> Unit, + ) = null }, - mainContext = defaultDispatcher, - cachedPagingData = it - ) { - override suspend fun presentNewList( - previousList: NullPaddedList, - newList: NullPaddedList, - lastAccessedIndex: Int, - onListPresentable: () -> Unit - ) = null - }).get()?.apply { + ).get()?.apply { _clickedItem.value = this[clickedItemPosition.value] } } } } -} \ No newline at end of file +} diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/adminaction/DetailAdminActionScreen.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/adminaction/DetailAdminActionScreen.kt index a57bfb7fe..dd10bb10b 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/adminaction/DetailAdminActionScreen.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/adminaction/DetailAdminActionScreen.kt @@ -21,13 +21,14 @@ import androidx.compose.ui.unit.TextUnit import androidx.compose.ui.unit.TextUnitType import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel -import com.android.mediproject.core.model.remote.adminaction.AdminActionListItemDto +import com.android.mediproject.core.model.adminaction.AdminAction import java.time.format.DateTimeFormatter @Preview @Composable fun DetailAdminActionScreen( - viewModel: AdminActionViewModel = hiltViewModel()) { + viewModel: AdminActionViewModel = hiltViewModel(), +) { viewModel.getClickedItem() val item = viewModel.clickedItem.collectAsState() @@ -37,7 +38,7 @@ fun DetailAdminActionScreen( } @Composable -fun Item(item: AdminActionListItemDto) { +fun Item(item: AdminAction) { Surface( modifier = Modifier .fillMaxWidth() @@ -53,39 +54,49 @@ fun Item(item: AdminActionListItemDto) { ) Spacer(Modifier.height(20.dp)) - Text(text = item.itemName, + Text( + text = item.itemName, fontSize = TextUnit(20f, type = TextUnitType.Sp), style = TextStyle(color = "#32649F".color), modifier = Modifier.align(Alignment.End), - textAlign = TextAlign.Right) + textAlign = TextAlign.Right, + ) Spacer(Modifier.height(20.dp)) - Text(text = item.lastSettleDate.format(DateTimeFormatter.ISO_LOCAL_DATE), + Text( + text = item.lastSettleDate.format(DateTimeFormatter.ISO_LOCAL_DATE), fontSize = TextUnit(14f, type = TextUnitType.Sp), style = TextStyle(color = "#595959".color), modifier = Modifier.align(Alignment.End), - textAlign = TextAlign.Right) + textAlign = TextAlign.Right, + ) Divider(Modifier.padding(top = 20.dp, bottom = 40.dp)) - Text(text = item.violation, + Text( + text = item.violation, fontSize = TextUnit(14f, type = TextUnitType.Sp), modifier = Modifier.padding(bottom = 8.dp), - color = "#3E3C3C".color) + color = "#3E3C3C".color, + ) - Text(text = item.disposition, + Text( + text = item.disposition, fontSize = TextUnit(14f, type = TextUnitType.Sp), modifier = Modifier.padding(bottom = 8.dp), - color = "#3E3C3C".color) + color = "#3E3C3C".color, + ) - Text(text = item.applyLaw, + Text( + text = item.applyLaw, fontSize = TextUnit(14f, type = TextUnitType.Sp), modifier = Modifier.padding(bottom = 8.dp), - color = "#3E3C3C".color) + color = "#3E3C3C".color, + ) } } } val String.color - get() = Color(android.graphics.Color.parseColor(this)) \ No newline at end of file + get() = Color(android.graphics.Color.parseColor(this)) diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/PenaltyListAdapter.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/PenaltyListAdapter.kt index b08ae7b80..9ae66daa0 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/PenaltyListAdapter.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/PenaltyListAdapter.kt @@ -4,7 +4,7 @@ import android.view.ViewGroup import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView -import com.android.mediproject.core.model.remote.recall.RecallSuspension +import com.android.mediproject.core.model.recall.RecallSuspension import com.android.mediproject.core.ui.base.view.SimpleListItemView import com.android.mediproject.feature.news.R diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/RecentPenaltyListFragment.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/RecentPenaltyListFragment.kt index 5e69071de..644b5576d 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/RecentPenaltyListFragment.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/RecentPenaltyListFragment.kt @@ -8,8 +8,8 @@ import com.android.mediproject.core.common.mapper.MedicineInfoMapper import com.android.mediproject.core.common.util.deepNavigate import com.android.mediproject.core.common.util.navigateByDeepLink import com.android.mediproject.core.common.viewmodel.UiState -import com.android.mediproject.core.model.local.navargs.RecallDisposalArgs -import com.android.mediproject.core.model.remote.recall.RecallSuspension +import com.android.mediproject.core.model.navargs.RecallDisposalArgs +import com.android.mediproject.core.model.recall.RecallSuspension import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.core.ui.base.view.stateAsCollect import com.android.mediproject.feature.news.databinding.FragmentRecentPenaltyListBinding diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/RecentPenaltyListViewModel.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/RecentPenaltyListViewModel.kt index c84767c55..b26c06c20 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/RecentPenaltyListViewModel.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/RecentPenaltyListViewModel.kt @@ -5,7 +5,7 @@ import com.android.mediproject.core.common.viewmodel.MutableEventFlow import com.android.mediproject.core.common.viewmodel.UiState import com.android.mediproject.core.common.viewmodel.asEventFlow import com.android.mediproject.core.domain.GetRecallSuspensionInfoUseCase -import com.android.mediproject.core.model.remote.recall.RecallSuspension +import com.android.mediproject.core.model.recall.RecallSuspension import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/DetailRecallSuspensionScreen.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/DetailRecallSuspensionScreen.kt index 7e6bc1552..b9bd1026c 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/DetailRecallSuspensionScreen.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/DetailRecallSuspensionScreen.kt @@ -23,7 +23,7 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.NavController import androidx.navigation.compose.rememberNavController import com.android.mediproject.core.common.viewmodel.UiState -import com.android.mediproject.core.model.remote.recall.DetailRecallSuspension +import com.android.mediproject.core.model.recall.DetailRecallSuspension import com.android.mediproject.core.ui.compose.CenterProgressIndicator import com.android.mediproject.feature.news.adminaction.color import java.time.format.DateTimeFormatter diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/DetailRecallSuspensionViewModel.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/DetailRecallSuspensionViewModel.kt index ec074daa9..d92c8a9f8 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/DetailRecallSuspensionViewModel.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/DetailRecallSuspensionViewModel.kt @@ -6,7 +6,7 @@ import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers import com.android.mediproject.core.common.viewmodel.UiState import com.android.mediproject.core.domain.GetRecallSuspensionInfoUseCase -import com.android.mediproject.core.model.remote.recall.DetailRecallSuspension +import com.android.mediproject.core.model.recall.DetailRecallSuspension import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineDispatcher diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/RecallSuspensionScreen.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/RecallSuspensionScreen.kt index d9af50a61..66b44fb8d 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/RecallSuspensionScreen.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/RecallSuspensionScreen.kt @@ -29,7 +29,7 @@ import androidx.paging.LoadState import androidx.paging.compose.collectAsLazyPagingItems import androidx.paging.compose.itemContentType import androidx.paging.compose.itemKey -import com.android.mediproject.core.model.remote.recall.RecallSuspension +import com.android.mediproject.core.model.recall.RecallSuspension import com.android.mediproject.core.ui.compose.CenterProgressIndicator import java.time.format.DateTimeFormatter diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/RecallSuspensionViewModel.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/RecallSuspensionViewModel.kt index a1cf7e58d..a9f20fddd 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/RecallSuspensionViewModel.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/RecallSuspensionViewModel.kt @@ -6,7 +6,7 @@ import androidx.paging.cachedIn import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers import com.android.mediproject.core.domain.GetRecallSuspensionInfoUseCase -import com.android.mediproject.core.model.remote.recall.RecallSuspension +import com.android.mediproject.core.model.recall.RecallSuspension import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineDispatcher diff --git a/feature/search/build.gradle.kts b/feature/search/build.gradle.kts index 5d44fb5df..80292557e 100644 --- a/feature/search/build.gradle.kts +++ b/feature/search/build.gradle.kts @@ -4,12 +4,13 @@ plugins { android { namespace = "com.android.mediproject.feature.search" -} -hilt { - enableAggregatingTask = true + hilt { + enableAggregatingTask = true + } } + dependencies { implementation(project(":core:ui")) implementation(project(":core:common")) diff --git a/feature/search/src/main/java/com/android/mediproject/feature/search/SearchMedicinesFragment.kt b/feature/search/src/main/java/com/android/mediproject/feature/search/SearchMedicinesFragment.kt index 56d1e87c5..ed3220dce 100644 --- a/feature/search/src/main/java/com/android/mediproject/feature/search/SearchMedicinesFragment.kt +++ b/feature/search/src/main/java/com/android/mediproject/feature/search/SearchMedicinesFragment.kt @@ -8,10 +8,10 @@ import androidx.navigation.NavOptions import androidx.navigation.findNavController import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.findNavController -import com.android.mediproject.core.common.uiutil.SystemBarColorAnalyzer -import com.android.mediproject.core.common.uiutil.SystemBarController -import com.android.mediproject.core.common.uiutil.SystemBarStyler -import com.android.mediproject.core.common.uiutil.hideKeyboard +import com.android.mediproject.core.common.util.SystemBarColorAnalyzer +import com.android.mediproject.core.common.util.SystemBarController +import com.android.mediproject.core.common.util.SystemBarStyler +import com.android.mediproject.core.common.util.hideKeyboard import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.core.ui.base.view.MediSearchbar import com.android.mediproject.feature.search.databinding.FragmentSearchMedicinesBinding diff --git a/feature/search/src/main/java/com/android/mediproject/feature/search/recentsearchlist/RecentSearchListFragment.kt b/feature/search/src/main/java/com/android/mediproject/feature/search/recentsearchlist/RecentSearchListFragment.kt index 44da73492..470f388b5 100644 --- a/feature/search/src/main/java/com/android/mediproject/feature/search/recentsearchlist/RecentSearchListFragment.kt +++ b/feature/search/src/main/java/com/android/mediproject/feature/search/recentsearchlist/RecentSearchListFragment.kt @@ -7,7 +7,7 @@ import androidx.core.os.bundleOf import androidx.core.view.size import androidx.fragment.app.activityViewModels import com.android.mediproject.core.common.viewmodel.UiState -import com.android.mediproject.core.model.search.local.SearchHistoryItemDto +import com.android.mediproject.core.model.search.SearchHistory import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.core.ui.base.view.ButtonChip import com.android.mediproject.core.ui.base.view.stateAsCollect @@ -64,7 +64,7 @@ class RecentSearchListFragment : * * 클릭 시 관련 로직을 수행하도록 합니다. */ - private fun addHistoryItemChips(searchHistoryItemDto: SearchHistoryItemDto) { + private fun addHistoryItemChips(searchHistory: SearchHistory) { binding.apply { val horizontalSpace = resources.getDimension(com.android.mediproject.core.ui.R.dimen.dp_4).toInt() this.searchHistoryList.addView( @@ -72,10 +72,10 @@ class RecentSearchListFragment : layoutParams = FlexboxLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT).apply { setMargins(horizontalSpace, 0, horizontalSpace, 0) } - data = searchHistoryItemDto.query + data = searchHistory.query setChipText(data.toString()) setOnChipClickListener { - onClicked(searchHistoryItemDto.query) + onClicked(searchHistory.query) } }, ) diff --git a/feature/search/src/main/java/com/android/mediproject/feature/search/result/OpenMedicineInfo.kt b/feature/search/src/main/java/com/android/mediproject/feature/search/result/OpenMedicineInfo.kt index 2918d9047..1a74b115b 100644 --- a/feature/search/src/main/java/com/android/mediproject/feature/search/result/OpenMedicineInfo.kt +++ b/feature/search/src/main/java/com/android/mediproject/feature/search/result/OpenMedicineInfo.kt @@ -1,7 +1,7 @@ package com.android.mediproject.feature.search.result -import com.android.mediproject.core.model.local.navargs.MedicineInfoArgs +import com.android.mediproject.core.model.navargs.MedicineInfoArgs sealed class EventState { data class OpenMedicineInfo(val medicineInfoArgs: MedicineInfoArgs) : EventState() -} \ No newline at end of file +} diff --git a/feature/search/src/main/java/com/android/mediproject/feature/search/result/ai/AiSearchResultFragment.kt b/feature/search/src/main/java/com/android/mediproject/feature/search/result/ai/AiSearchResultFragment.kt index df16d093e..5439b8461 100644 --- a/feature/search/src/main/java/com/android/mediproject/feature/search/result/ai/AiSearchResultFragment.kt +++ b/feature/search/src/main/java/com/android/mediproject/feature/search/result/ai/AiSearchResultFragment.kt @@ -1,7 +1,6 @@ package com.android.mediproject.feature.search.result.ai import android.annotation.SuppressLint -import android.content.Context import android.os.Bundle import android.text.Html import android.view.View @@ -9,10 +8,10 @@ import androidx.core.view.isVisible import androidx.fragment.app.activityViewModels import androidx.navigation.findNavController import androidx.recyclerview.widget.DividerItemDecoration -import com.android.mediproject.core.common.uiutil.SystemBarStyler +import com.android.mediproject.core.common.util.SystemBarStyler import com.android.mediproject.core.common.util.deepNavigate import com.android.mediproject.core.common.viewmodel.UiState -import com.android.mediproject.core.model.local.navargs.MedicineInfoArgs +import com.android.mediproject.core.model.navargs.MedicineInfoArgs import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.search.R import com.android.mediproject.feature.search.databinding.FragmentAiSearchResultBinding diff --git a/feature/search/src/main/java/com/android/mediproject/feature/search/result/ai/AiSearchResultViewModel.kt b/feature/search/src/main/java/com/android/mediproject/feature/search/result/ai/AiSearchResultViewModel.kt index d35c52730..0f3c3ae88 100644 --- a/feature/search/src/main/java/com/android/mediproject/feature/search/result/ai/AiSearchResultViewModel.kt +++ b/feature/search/src/main/java/com/android/mediproject/feature/search/result/ai/AiSearchResultViewModel.kt @@ -9,7 +9,7 @@ import com.android.mediproject.core.common.viewmodel.UiState import com.android.mediproject.core.common.viewmodel.asEventFlow import com.android.mediproject.core.domain.GetMedicineDetailsUseCase import com.android.mediproject.core.model.ai.ClassificationResult -import com.android.mediproject.core.model.local.navargs.MedicineInfoArgs +import com.android.mediproject.core.model.navargs.MedicineInfoArgs import com.android.mediproject.core.model.medicine.medicinedetailinfo.MedicineDetail import com.android.mediproject.core.ui.base.BaseViewModel import com.android.mediproject.feature.search.result.EventState diff --git a/feature/search/src/main/java/com/android/mediproject/feature/search/result/manual/ManualSearchResultFragment.kt b/feature/search/src/main/java/com/android/mediproject/feature/search/result/manual/ManualSearchResultFragment.kt index d17e1cde2..4a4f33784 100644 --- a/feature/search/src/main/java/com/android/mediproject/feature/search/result/manual/ManualSearchResultFragment.kt +++ b/feature/search/src/main/java/com/android/mediproject/feature/search/result/manual/ManualSearchResultFragment.kt @@ -10,7 +10,7 @@ import androidx.recyclerview.widget.DividerItemDecoration import com.android.mediproject.core.common.paging.setOnStateChangedListener import com.android.mediproject.core.common.util.deepNavigate import com.android.mediproject.core.model.constants.MedicationType -import com.android.mediproject.core.model.local.navargs.MedicineInfoArgs +import com.android.mediproject.core.model.navargs.MedicineInfoArgs import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.core.ui.base.view.listfilter.MediPopupMenu import com.android.mediproject.feature.search.R diff --git a/feature/search/src/main/java/com/android/mediproject/feature/search/result/manual/ManualSearchResultViewModel.kt b/feature/search/src/main/java/com/android/mediproject/feature/search/result/manual/ManualSearchResultViewModel.kt index 4182292ff..7acedb371 100644 --- a/feature/search/src/main/java/com/android/mediproject/feature/search/result/manual/ManualSearchResultViewModel.kt +++ b/feature/search/src/main/java/com/android/mediproject/feature/search/result/manual/ManualSearchResultViewModel.kt @@ -10,7 +10,7 @@ import com.android.mediproject.core.common.viewmodel.MutableEventFlow import com.android.mediproject.core.common.viewmodel.asEventFlow import com.android.mediproject.core.domain.GetMedicineApprovalListUseCase import com.android.mediproject.core.model.constants.MedicationType -import com.android.mediproject.core.model.local.navargs.MedicineInfoArgs +import com.android.mediproject.core.model.navargs.MedicineInfoArgs import com.android.mediproject.core.model.medicine.medicineapproval.ApprovedMedicine import com.android.mediproject.core.model.requestparameters.ApprovalListSearchParameter import com.android.mediproject.core.ui.base.BaseViewModel @@ -20,6 +20,7 @@ import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.mapLatest import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch @@ -35,7 +36,6 @@ import javax.inject.Inject @HiltViewModel class ManualSearchResultViewModel @Inject constructor( private val getMedicineApprovalListUseCase: GetMedicineApprovalListUseCase, - @Dispatcher(MediDispatchers.IO) private val ioDispatcher: CoroutineDispatcher, @Dispatcher(MediDispatchers.Default) private val defaultDispatcher: CoroutineDispatcher, ) : BaseViewModel(), ISendEvent { @@ -44,7 +44,7 @@ class ManualSearchResultViewModel @Inject constructor( val searchParameter = _searchParameter.asStateFlow() val searchResultFlow = searchParameter.flatMapLatest { - getMedicineApprovalListUseCase(it).cachedIn(viewModelScope).mapLatest { pagingData -> + getMedicineApprovalListUseCase(it).cachedIn(viewModelScope).flowOn(defaultDispatcher).mapLatest { pagingData -> pagingData.map { item -> item.onClick = ::send item diff --git a/feature/search/src/main/res/layout/manual_medicine_item.xml b/feature/search/src/main/res/layout/manual_medicine_item.xml index e85807f3a..ebc45f99a 100644 --- a/feature/search/src/main/res/layout/manual_medicine_item.xml +++ b/feature/search/src/main/res/layout/manual_medicine_item.xml @@ -21,6 +21,7 @@ android:layout_width="60dp" android:layout_height="60dp" app:img="@{item.imgUrl}" + app:caching="@{false}" android:contentDescription="@string/medicineImage" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" From c0c476ec3a5fb730b05e7751994636b3f5de2af9 Mon Sep 17 00:00:00 2001 From: JSPark Date: Wed, 26 Jul 2023 23:31:58 +0900 Subject: [PATCH 09/13] =?UTF-8?q?#194=20=EC=95=88=EC=93=B0=EB=8A=94=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80=EB=A1=9C=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 1 + app/src/main/res/layout/activity_main.xml | 2 +- .../android/mediproject/core/common/viewmodel/EventFlow.kt | 1 - .../mediproject/core/datastore/SavedTokenSerializer.kt | 4 +--- .../core/model/searchmedicines/SearchQueryArgs.kt | 4 ++-- .../com/android/mediproject/core/ui/base/view/Subtitle.kt | 7 ++++--- core/ui/src/main/res/layout/subtitle.xml | 5 +++-- feature/camera/src/main/res/values/strings.xml | 2 +- .../com/android/mediproject/feature/home/HomeFragment.kt | 4 ++-- feature/home/src/main/res/navigation/home_nav.xml | 2 +- .../news/recallsuspension/RecallSuspensionScreen.kt | 2 -- .../mediproject/feature/search/SearchMedicinesFragment.kt | 4 ++-- 12 files changed, 18 insertions(+), 20 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b2e30ebc1..5c1534f26 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -19,6 +19,7 @@ android:allowBackup="true" android:icon="@mipmap/ic_medilenz" android:label="@string/app_name" + android:supportsRtl="false" android:theme="@style/Theme.MediProject" android:usesCleartextTraffic="true"> : Flow { interface MutableEventFlow : EventFlow, FlowCollector -@Suppress("FunctionName") fun MutableEventFlow( replay: Int = EventFlow.DEFAULT_REPLAY, ): MutableEventFlow = EventFlowImpl(replay) diff --git a/core/datastore/src/main/java/com/android/mediproject/core/datastore/SavedTokenSerializer.kt b/core/datastore/src/main/java/com/android/mediproject/core/datastore/SavedTokenSerializer.kt index 2772934cf..2e062125a 100644 --- a/core/datastore/src/main/java/com/android/mediproject/core/datastore/SavedTokenSerializer.kt +++ b/core/datastore/src/main/java/com/android/mediproject/core/datastore/SavedTokenSerializer.kt @@ -14,7 +14,6 @@ class SavedTokenSerializer @Inject constructor() : Serializer { override suspend fun readFrom(input: InputStream): SavedToken { try { - @Suppress("BlockingMethodInNonBlockingContext") return SavedToken.parseFrom(input) } catch (exception: Exception) { throw CorruptionException("Failed to read proto.", exception) @@ -22,8 +21,7 @@ class SavedTokenSerializer @Inject constructor() : Serializer { } override suspend fun writeTo(t: SavedToken, output: OutputStream) { - @Suppress("BlockingMethodInNonBlockingContext") t.writeTo(output) } -} \ No newline at end of file +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/searchmedicines/SearchQueryArgs.kt b/core/model/src/main/java/com/android/mediproject/core/model/searchmedicines/SearchQueryArgs.kt index 1c6b1bac9..2ccde2577 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/searchmedicines/SearchQueryArgs.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/searchmedicines/SearchQueryArgs.kt @@ -5,8 +5,8 @@ import com.android.mediproject.core.model.navargs.BaseNavArgs /** * 검색어를 전달할 인자 * - * @property query 검색어 + * @property words 검색어 */ data class SearchQueryArgs( - val query: String = "", + val words: String = "", ) : BaseNavArgs(SearchQueryArgs::class.java.name) diff --git a/core/ui/src/main/java/com/android/mediproject/core/ui/base/view/Subtitle.kt b/core/ui/src/main/java/com/android/mediproject/core/ui/base/view/Subtitle.kt index 0fcf3a19f..16a68b16c 100644 --- a/core/ui/src/main/java/com/android/mediproject/core/ui/base/view/Subtitle.kt +++ b/core/ui/src/main/java/com/android/mediproject/core/ui/base/view/Subtitle.kt @@ -2,6 +2,7 @@ package com.android.mediproject.core.ui.base.view import android.content.Context import android.graphics.Typeface +import android.text.Editable import android.text.InputType import android.util.AttributeSet import android.view.LayoutInflater @@ -15,7 +16,7 @@ import com.android.mediproject.core.ui.R class Subtitle @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, - @AttrRes defStyleAttr: Int = 0 + @AttrRes defStyleAttr: Int = 0, ) : ConstraintLayout(context, attrs, defStyleAttr) { companion object { @@ -81,5 +82,5 @@ class Subtitle @JvmOverloads constructor( //EditText에 적은 값을 불러오는 함수 fun getValue(): String = inputData.text.toString() - fun getEditable() = inputData.text -} \ No newline at end of file + fun getEditable(): Editable = inputData.text +} diff --git a/core/ui/src/main/res/layout/subtitle.xml b/core/ui/src/main/res/layout/subtitle.xml index 57ee354de..e49099978 100644 --- a/core/ui/src/main/res/layout/subtitle.xml +++ b/core/ui/src/main/res/layout/subtitle.xml @@ -45,7 +45,8 @@ android:textSize="14sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toBottomOf="@id/subtitleLL" /> + app:layout_constraintTop_toBottomOf="@id/subtitleLL" + android:inputType="text" /> - \ No newline at end of file + diff --git a/feature/camera/src/main/res/values/strings.xml b/feature/camera/src/main/res/values/strings.xml index 10ab0110d..074415610 100644 --- a/feature/camera/src/main/res/values/strings.xml +++ b/feature/camera/src/main/res/values/strings.xml @@ -13,7 +13,7 @@ 검출된 의약품이 없습니다 AI를 초기화하는 중입니다. - Processing... + Processing… 캡처된 이미지 축소 확대 diff --git a/feature/home/src/main/java/com/android/mediproject/feature/home/HomeFragment.kt b/feature/home/src/main/java/com/android/mediproject/feature/home/HomeFragment.kt index 5b90cd942..a3b898df0 100644 --- a/feature/home/src/main/java/com/android/mediproject/feature/home/HomeFragment.kt +++ b/feature/home/src/main/java/com/android/mediproject/feature/home/HomeFragment.kt @@ -8,13 +8,13 @@ import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController import com.android.mediproject.core.common.mapper.MedicineInfoMapper import com.android.mediproject.core.common.util.SystemBarStyler +import com.android.mediproject.core.common.viewmodel.repeatOnStarted import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.comments.recentcommentlist.RecentCommentListFragment import com.android.mediproject.feature.home.databinding.FragmentHomeBinding import com.android.mediproject.feature.news.penalties.recentpenaltylist.RecentPenaltyListFragment import com.android.mediproject.feature.search.recentsearchlist.RecentSearchListFragment import dagger.hilt.android.AndroidEntryPoint -import com.android.mediproject.core.common.viewmodel.repeatOnStarted import javax.inject.Inject @AndroidEntryPoint @@ -124,7 +124,7 @@ class HomeFragment : BaseFragment(FragmentHo childFragmentManager.setFragmentResultListener(RecentSearchListFragment.ResultKey.RESULT_KEY.name, viewLifecycleOwner) { _, bundle -> findNavController().navigate( R.id.action_homeFragment_to_searchMedicinesFragment, - bundleOf("query" to bundle.getString(RecentSearchListFragment.ResultKey.WORD.name)), + bundleOf("words" to bundle.getString(RecentSearchListFragment.ResultKey.WORD.name)), ) } } diff --git a/feature/home/src/main/res/navigation/home_nav.xml b/feature/home/src/main/res/navigation/home_nav.xml index 3838c67df..222cd67eb 100644 --- a/feature/home/src/main/res/navigation/home_nav.xml +++ b/feature/home/src/main/res/navigation/home_nav.xml @@ -24,7 +24,7 @@ tools:layout="@layout/fragment_search_medicines"> diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/RecallSuspensionScreen.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/RecallSuspensionScreen.kt index 66b44fb8d..9efe41aaa 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/RecallSuspensionScreen.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/recallsuspension/RecallSuspensionScreen.kt @@ -10,12 +10,10 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material3.Divider -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable - import androidx.compose.ui.Alignment.Companion.CenterVertically import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color diff --git a/feature/search/src/main/java/com/android/mediproject/feature/search/SearchMedicinesFragment.kt b/feature/search/src/main/java/com/android/mediproject/feature/search/SearchMedicinesFragment.kt index ed3220dce..070de643b 100644 --- a/feature/search/src/main/java/com/android/mediproject/feature/search/SearchMedicinesFragment.kt +++ b/feature/search/src/main/java/com/android/mediproject/feature/search/SearchMedicinesFragment.kt @@ -12,6 +12,7 @@ import com.android.mediproject.core.common.util.SystemBarColorAnalyzer import com.android.mediproject.core.common.util.SystemBarController import com.android.mediproject.core.common.util.SystemBarStyler import com.android.mediproject.core.common.util.hideKeyboard +import com.android.mediproject.core.common.viewmodel.repeatOnStarted import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.core.ui.base.view.MediSearchbar import com.android.mediproject.feature.search.databinding.FragmentSearchMedicinesBinding @@ -19,7 +20,6 @@ import com.android.mediproject.feature.search.recentsearchlist.RecentSearchListF import com.android.mediproject.feature.search.recentsearchlist.RecentSearchListFragmentDirections import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.flow.collectLatest -import com.android.mediproject.core.common.viewmodel.repeatOnStarted import javax.inject.Inject @AndroidEntryPoint @@ -43,7 +43,7 @@ class SearchMedicinesFragment : BaseFragment Date: Thu, 27 Jul 2023 01:06:08 +0900 Subject: [PATCH 10/13] =?UTF-8?q?#193=20DUR=20=EC=84=B1=EB=B6=84/=ED=92=88?= =?UTF-8?q?=EB=AA=A9=20=EC=A1=B0=ED=9A=8C=20=ED=95=98=EB=8A=94=20=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=EB=A0=88=EC=9D=B4=EC=96=B4=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=A0=9C=EC=9E=91=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../durproduct/DurProductRepositoryImpl.kt | 21 +++++++++--- .../datasource/dur/DurProductDataSource.kt | 6 ++++ .../dur/DurProductDataSourceImpl.kt | 34 +++++++++++++++++++ 3 files changed, 56 insertions(+), 5 deletions(-) diff --git a/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepositoryImpl.kt index 3f6f89812..442a91349 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepositoryImpl.kt @@ -5,6 +5,7 @@ import com.android.mediproject.core.model.dur.DurType import com.android.mediproject.core.network.datasource.dur.DurProductDataSource import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow +import kotlinx.coroutines.flow.last import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import javax.inject.Inject @@ -14,8 +15,7 @@ class DurProductRepositoryImpl @Inject constructor( ) : DurProductRepository { private val mapCacheMaxSize = 5 - private val _durProductCacheMap = mutableMapOf>>() - private val durProductCacheMap = _durProductCacheMap.toMap() + private val durProductCacheMap = mutableMapOf>>() private val mutex = Mutex() fun hasDur(itemName: String?, itemSeq: String?): Flow>> = channelFlow { @@ -32,14 +32,25 @@ class DurProductRepositoryImpl @Inject constructor( } } - fun durList(itemName: String?, itemSeq: String?): Flow>> = channelFlow { + fun getDur(itemSeq: String, durTypes: List): Flow>> = channelFlow { + val filteredDurTypes = mutex.withLock { + durProductCacheMap[itemSeq]?.keys?.filter { it !in durTypes } ?: durTypes + } + val map = mutableMapOf>() + durProductDataSource.getDurList(itemSeq, filteredDurTypes).last().forEach { (durType, response) -> + response.onSuccess { + cache(itemSeq, durType, it) + map[durType] = it + } + } + send(map) } private suspend fun cache(key: String, durType: DurType, response: DataGoKrResponse<*>) { mutex.withLock { - if (_durProductCacheMap.size > mapCacheMaxSize) _durProductCacheMap.remove(_durProductCacheMap.keys.first()) - _durProductCacheMap[key] = _durProductCacheMap[key]?.plus(durType to response) ?: mapOf(durType to response) + if (durProductCacheMap.size > mapCacheMaxSize) durProductCacheMap.remove(durProductCacheMap.keys.first()) + durProductCacheMap[key] = durProductCacheMap[key]?.apply { this[durType] = response } ?: mutableMapOf(durType to response) } } } diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSource.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSource.kt index e89492241..04cbae9d6 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSource.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSource.kt @@ -1,5 +1,7 @@ package com.android.mediproject.core.network.datasource.dur +import com.android.mediproject.core.model.DataGoKrResponse +import com.android.mediproject.core.model.dur.DurType import com.android.mediproject.core.model.dur.durproduct.capacity.DurProductCapacityAttentionResponse import com.android.mediproject.core.model.dur.durproduct.combination.DurProductCombinationTabooResponse import com.android.mediproject.core.model.dur.durproduct.dosing.DurProductDosingCautionResponse @@ -9,8 +11,12 @@ import com.android.mediproject.core.model.dur.durproduct.pregnancy.DurProductPre import com.android.mediproject.core.model.dur.durproduct.productlist.DurProductListResponse import com.android.mediproject.core.model.dur.durproduct.senior.DurProductSeniorCautionResponse import com.android.mediproject.core.model.dur.durproduct.specialtyagegroup.DurProductSpecialtyAgeGroupTabooResponse +import kotlinx.coroutines.flow.Flow interface DurProductDataSource { + + fun getDurList(itemSeq: String, durTypes: List): Flow>>> + suspend fun getDurProductList( itemName: String?, itemSeq: String?, diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt index f6e39bd09..ff3dacd53 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt @@ -1,5 +1,7 @@ package com.android.mediproject.core.network.datasource.dur +import com.android.mediproject.core.model.DataGoKrResponse +import com.android.mediproject.core.model.dur.DurType import com.android.mediproject.core.model.dur.durproduct.capacity.DurProductCapacityAttentionResponse import com.android.mediproject.core.model.dur.durproduct.combination.DurProductCombinationTabooResponse import com.android.mediproject.core.model.dur.durproduct.dosing.DurProductDosingCautionResponse @@ -11,11 +13,43 @@ import com.android.mediproject.core.model.dur.durproduct.senior.DurProductSenior import com.android.mediproject.core.model.dur.durproduct.specialtyagegroup.DurProductSpecialtyAgeGroupTabooResponse import com.android.mediproject.core.network.module.datagokr.DurProductInfoNetworkApi import com.android.mediproject.core.network.onDataGokrResponse +import kotlinx.coroutines.async +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.channelFlow import javax.inject.Inject +import kotlin.reflect.full.callSuspendBy +import kotlin.reflect.full.findParameterByName class DurProductDataSourceImpl @Inject constructor( private val durProductInfoNetworkApi: DurProductInfoNetworkApi, ) : DurProductDataSource { + + private val methods = mapOf( + DurType.CAPACITY_ATTENTION to ::getCapacityAttentionInfo, + DurType.COMBINATION_TABOO to ::getCombinationTabooInfo, + DurType.DOSING_CAUTION to ::getDosingCautionInfo, + DurType.EX_RELEASE_TABLET_SPLIT_ATTENTION to ::getExReleaseTableSplitAttentionInfo, + DurType.EFFICACY_GROUP_DUPLICATION to ::getEfficacyGroupDuplicationInfo, + DurType.PREGNANT_WOMAN_TABOO to ::getPregnantWomanTabooInfo, + DurType.SENIOR_CAUTION to ::getSeniorCaution, + DurType.SPECIALTY_AGE_GROUP_TABOO to ::getSpecialtyAgeGroupTabooInfo, + ) + + private val itemSeqParameter = ::getDurList.findParameterByName("itemSeq")!! + + override fun getDurList(itemSeq: String, durTypes: List): Flow>>> = channelFlow { + val args = mapOf(itemSeqParameter to itemSeq) + val map = durTypes.map { type -> + type to async { + methods.getValue(type).callSuspendBy(args) + } + }.associate { + it.first to it.second.await() + } + + send(map) + } + override suspend fun getDurProductList(itemName: String?, itemSeq: String?): Result = durProductInfoNetworkApi.getDurProductList(itemName = itemName, itemSeq = itemSeq).onDataGokrResponse() From e5035adb5ed66da0e167e4da9361046bf7e1795d Mon Sep 17 00:00:00 2001 From: JSPark <48265129+pknujsp@users.noreply.github.com> Date: Thu, 27 Jul 2023 14:43:47 +0900 Subject: [PATCH 11/13] =?UTF-8?q?#193=20DUR=20=EC=84=B1=EB=B6=84/=ED=92=88?= =?UTF-8?q?=EB=AA=A9=20=EC=9D=91=EB=8B=B5=20=EA=B0=9D=EC=B2=B4=EB=A5=BC=20?= =?UTF-8?q?UI=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EA=B0=9D=EC=B2=B4=EB=A1=9C?= =?UTF-8?q?=20=EB=B3=80=ED=99=98=ED=95=98=EB=8A=94=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dur/durproduct/DurProductRepository.kt | 9 ++- .../durproduct/DurProductRepositoryImpl.kt | 12 ++-- .../mediproject/core/domain/GetDurUseCase.kt | 8 +++ .../core/model/DataGoKrResponse.kt | 1 + .../mediproject/core/model/dur/DurItem.kt | 3 + .../core/model/dur/DurItemWrapper.kt | 9 +++ .../core/model/dur/DurItemWrapperFactory.kt | 35 +++++++++++ .../mediproject/core/model/dur/DurListItem.kt | 7 +++ .../DurIngrCapacityAttentionResponse.kt | 2 +- .../combination/DurIngrCombinationTaboo.kt | 35 +++++++++++ .../DurIngrCombinationTabooResponse.kt | 2 +- .../dosing/DurIngrDosingCautionResponse.kt | 2 +- ...DurIngrEfficacyGroupDuplicationResponse.kt | 2 +- .../DurIngrPregnantWomanTabooResponse.kt | 2 +- .../senior/DurIngrSeniorCautionResponse.kt | 2 +- .../DurIngrSpecialtyAgeGroupTabooResponse.kt | 2 +- .../core/model/dur/duringr/ui/DurIngrItem.kt | 10 ++++ .../capacity/DurProductCapacityAttention.kt | 33 +++++++++++ .../DurProductCapacityAttentionResponse.kt | 3 +- .../combination/DurProductCombinationTaboo.kt | 36 ++++++++++++ .../DurProductCombinationTabooResponse.kt | 3 +- .../dosing/DurProductDosingCaution.kt | 28 +++++++++ .../dosing/DurProductDosingCautionResponse.kt | 2 +- .../DurProductEfficacyGroupDuplication.kt | 29 ++++++++++ ...ProductEfficacyGroupDuplicationResponse.kt | 2 +- .../DurProductExReleaseTableSplitAttention.kt | 27 +++++++++ ...uctExReleaseTableSplitAttentionResponse.kt | 2 +- .../pregnancy/DurProductPregnantWomanTaboo.kt | 34 +++++++++++ .../DurProductPregnantWomanTabooResponse.kt | 2 +- .../productlist/DurProductListResponse.kt | 2 +- .../senior/DurProductSeniorCaution.kt | 28 +++++++++ .../senior/DurProductSeniorCautionResponse.kt | 2 +- ...urProductSpecialtyAgeGroupTabooResponse.kt | 3 +- .../specialtyagegroup/DurSpecialtyAgeGroup.kt | 28 +++++++++ .../model/dur/durproduct/ui/DurProductItem.kt | 10 ++++ .../DurInfoFragment.kt} | 47 ++------------- .../precautions/dur/DurInfoViewModel.kt | 58 +++++++++++++++++++ .../MedicinePrecautionsItemPageAdapter.kt | 10 ++-- .../item/MedicineSafeUsageViewModel.kt | 35 ----------- .../MedicinePrecautionsItemFragment.kt | 5 +- .../precautions/PrecautionsListAdapter.kt | 4 +- ...afe_use_item.xml => fragment_dur_info.xml} | 10 ++-- 42 files changed, 468 insertions(+), 118 deletions(-) create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/dur/DurItem.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/dur/DurItemWrapper.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/dur/DurItemWrapperFactory.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/dur/DurListItem.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/combination/DurIngrCombinationTaboo.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/ui/DurIngrItem.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/capacity/DurProductCapacityAttention.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/combination/DurProductCombinationTaboo.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/dosing/DurProductDosingCaution.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplication.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttention.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/pregnancy/DurProductPregnantWomanTaboo.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/senior/DurProductSeniorCaution.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/specialtyagegroup/DurSpecialtyAgeGroup.kt create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/ui/DurProductItem.kt rename feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/{item/MedicineSafeUsageItemFragment.kt => dur/DurInfoFragment.kt} (66%) create mode 100644 feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/DurInfoViewModel.kt delete mode 100644 feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicineSafeUsageViewModel.kt rename feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/{item => precautions}/MedicinePrecautionsItemFragment.kt (91%) rename feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/{item => }/precautions/PrecautionsListAdapter.kt (94%) rename feature/medicine/src/main/res/layout/{fragment_medicine_safe_use_item.xml => fragment_dur_info.xml} (79%) diff --git a/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepository.kt index 913440ef7..1b177b559 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepository.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepository.kt @@ -1,5 +1,12 @@ package com.android.mediproject.core.data.dur.durproduct +import com.android.mediproject.core.model.dur.DurItem +import com.android.mediproject.core.model.dur.DurType +import kotlinx.coroutines.flow.Flow + interface DurProductRepository { - + + fun hasDur(itemName: String?, itemSeq: String?): Flow>> + + fun getDur(itemSeq: String, durTypes: List): Flow>>> } diff --git a/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepositoryImpl.kt index 442a91349..2510288e8 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepositoryImpl.kt @@ -1,6 +1,8 @@ package com.android.mediproject.core.data.dur.durproduct import com.android.mediproject.core.model.DataGoKrResponse +import com.android.mediproject.core.model.dur.DurItem +import com.android.mediproject.core.model.dur.DurItemWrapperFactory import com.android.mediproject.core.model.dur.DurType import com.android.mediproject.core.network.datasource.dur.DurProductDataSource import kotlinx.coroutines.flow.Flow @@ -18,7 +20,7 @@ class DurProductRepositoryImpl @Inject constructor( private val durProductCacheMap = mutableMapOf>>() private val mutex = Mutex() - fun hasDur(itemName: String?, itemSeq: String?): Flow>> = channelFlow { + override fun hasDur(itemName: String?, itemSeq: String?): Flow>> = channelFlow { val response = durProductDataSource.getDurProductList(itemName = itemName, itemSeq = itemSeq) response.onSuccess { if (it.body.items.isNotEmpty()) { @@ -32,15 +34,17 @@ class DurProductRepositoryImpl @Inject constructor( } } - fun getDur(itemSeq: String, durTypes: List): Flow>> = channelFlow { + override fun getDur(itemSeq: String, durTypes: List): Flow>>> = channelFlow { val filteredDurTypes = mutex.withLock { durProductCacheMap[itemSeq]?.keys?.filter { it !in durTypes } ?: durTypes } - val map = mutableMapOf>() + val map = mutableMapOf>>() durProductDataSource.getDurList(itemSeq, filteredDurTypes).last().forEach { (durType, response) -> response.onSuccess { cache(itemSeq, durType, it) - map[durType] = it + durType to Result.success(DurItemWrapperFactory.createForDurProduct(durType, it).convert()) + }.onFailure { + durType to Result.failure>(it) } } diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/GetDurUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/GetDurUseCase.kt index 74da00d3e..e348f2c8f 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/GetDurUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/GetDurUseCase.kt @@ -1,6 +1,8 @@ package com.android.mediproject.core.domain import com.android.mediproject.core.data.dur.durproduct.DurProductRepository +import com.android.mediproject.core.model.dur.DurType +import kotlinx.coroutines.flow.last import javax.inject.Inject import javax.inject.Singleton @@ -9,5 +11,11 @@ class GetDurUseCase @Inject constructor( private val durProductRepository: DurProductRepository, private val durIngrRepository: DurProductRepository, ) { + suspend fun hasDur( + itemName: String?, itemSeq: String?, + ) = durProductRepository.hasDur(itemName, itemSeq).last() + suspend fun getDur( + itemSeq: String, durTypes: List, + ) = durProductRepository.getDur(itemSeq, durTypes).last() } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/DataGoKrResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/DataGoKrResponse.kt index 92c99b892..41e8f6580 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/DataGoKrResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/DataGoKrResponse.kt @@ -25,6 +25,7 @@ abstract class DataGoKrResponse { @SerialName("totalCount") val totalCount: Int = 0, ) + interface LeafItem } inline fun > T.toResult(): Result = header?.run { diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItem.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItem.kt new file mode 100644 index 000000000..fd0150551 --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItem.kt @@ -0,0 +1,3 @@ +package com.android.mediproject.core.model.dur + +interface DurItem diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItemWrapper.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItemWrapper.kt new file mode 100644 index 000000000..80e136b26 --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItemWrapper.kt @@ -0,0 +1,9 @@ +package com.android.mediproject.core.model.dur + +import com.android.mediproject.core.model.DataGoKrResponse + +abstract class DurItemWrapper( + open val response: DataGoKrResponse<*>, +) { + abstract fun convert(): List +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItemWrapperFactory.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItemWrapperFactory.kt new file mode 100644 index 000000000..d92b8df1b --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItemWrapperFactory.kt @@ -0,0 +1,35 @@ +package com.android.mediproject.core.model.dur + +import com.android.mediproject.core.model.DataGoKrResponse +import com.android.mediproject.core.model.dur.durproduct.capacity.DurProductCapacityAttentionResponse +import com.android.mediproject.core.model.dur.durproduct.capacity.DurProductCapacityAttentionWrapper +import com.android.mediproject.core.model.dur.durproduct.combination.DurProductCombinationTabooResponse +import com.android.mediproject.core.model.dur.durproduct.combination.DurProductCombinationTabooWrapper +import com.android.mediproject.core.model.dur.durproduct.dosing.DurProductDosingCautionResponse +import com.android.mediproject.core.model.dur.durproduct.dosing.DurProductDosingCautionWrapper +import com.android.mediproject.core.model.dur.durproduct.efficacygroupduplication.DurProductEfficacyGroupDuplicationResponse +import com.android.mediproject.core.model.dur.durproduct.efficacygroupduplication.DurProductEfficacyGroupDuplicationWrapper +import com.android.mediproject.core.model.dur.durproduct.extendedreleasetablet.DurProductExReleaseTableSplitAttentionResponse +import com.android.mediproject.core.model.dur.durproduct.extendedreleasetablet.DurProductExReleaseTableSplitAttentionWrapper +import com.android.mediproject.core.model.dur.durproduct.pregnancy.DurProductPregnantWomanTabooResponse +import com.android.mediproject.core.model.dur.durproduct.pregnancy.DurProductPregnantWomanTabooWrapper +import com.android.mediproject.core.model.dur.durproduct.senior.DurProductSeniorCautionResponse +import com.android.mediproject.core.model.dur.durproduct.senior.DurProductSeniorCautionWrapper +import com.android.mediproject.core.model.dur.durproduct.specialtyagegroup.DurProductSpecialtyAgeGroupTabooResponse +import com.android.mediproject.core.model.dur.durproduct.specialtyagegroup.DurProductSpecialtyWrapper + +class DurItemWrapperFactory { + companion object { + inline fun > createForDurProduct(durType: DurType, response: T): DurItemWrapper = when (durType) { + DurType.SPECIALTY_AGE_GROUP_TABOO -> DurProductSpecialtyWrapper(response as DurProductSpecialtyAgeGroupTabooResponse) + DurType.SENIOR_CAUTION -> DurProductSeniorCautionWrapper(response as DurProductSeniorCautionResponse) + DurType.DOSING_CAUTION -> DurProductDosingCautionWrapper(response as DurProductDosingCautionResponse) + DurType.EFFICACY_GROUP_DUPLICATION -> DurProductEfficacyGroupDuplicationWrapper(response as DurProductEfficacyGroupDuplicationResponse) + DurType.EX_RELEASE_TABLET_SPLIT_ATTENTION -> DurProductExReleaseTableSplitAttentionWrapper(response as DurProductExReleaseTableSplitAttentionResponse) + DurType.COMBINATION_TABOO -> DurProductCombinationTabooWrapper(response as DurProductCombinationTabooResponse) + DurType.PREGNANT_WOMAN_TABOO -> DurProductPregnantWomanTabooWrapper(response as DurProductPregnantWomanTabooResponse) + DurType.CAPACITY_ATTENTION -> DurProductCapacityAttentionWrapper(response as DurProductCapacityAttentionResponse) + } + + } +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/DurListItem.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/DurListItem.kt new file mode 100644 index 000000000..5438e22e2 --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/DurListItem.kt @@ -0,0 +1,7 @@ +package com.android.mediproject.core.model.dur + +class DurListItem( + val durType: DurType, +) { + var durItems: Result>? = null +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/capacity/DurIngrCapacityAttentionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/capacity/DurIngrCapacityAttentionResponse.kt index a9b6398b6..47680c11a 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/capacity/DurIngrCapacityAttentionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/capacity/DurIngrCapacityAttentionResponse.kt @@ -47,7 +47,7 @@ class DurIngrCapacityAttentionResponse : DataGoKrResponse() { @SerialName("TYPE_CODE") val typeCode: String = "", // D,F,I @SerialName("TYPE_NAME ") val typeName: String = "", // 용량주의,노인주의,첨가제주의 @SerialName("VALID_TERM") val validTerm: String = "", // 제조일로부터 36 개월 - ) { + ) : LeafItem { val typeNames = typeName.split(",") val typeCodes = typeCode.split(",") } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/senior/DurProductSeniorCaution.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/senior/DurProductSeniorCaution.kt new file mode 100644 index 000000000..b1d72a6c5 --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/senior/DurProductSeniorCaution.kt @@ -0,0 +1,28 @@ +package com.android.mediproject.core.model.dur.durproduct.senior + +import com.android.mediproject.core.model.dur.DurItemWrapper +import com.android.mediproject.core.model.dur.DurType +import com.android.mediproject.core.model.dur.durproduct.ui.DurProductItem + +/** + * 노인 주의 + * + * @param itemName 품목명 + * @param prohibitContent 노인주의 내용 + */ +data class DurProductSeniorCaution( + val itemName: String, + override val prohibitContent: String, +) : DurProductItem(DurType.SENIOR_CAUTION) + +class DurProductSeniorCautionWrapper( + override val response: DurProductSeniorCautionResponse, +) : DurItemWrapper(response) { + override fun convert() = response.body.items.map { + DurProductSeniorCaution( + itemName = it.itemName, + prohibitContent = it.prohibitContent, + ) + } + +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/senior/DurProductSeniorCautionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/senior/DurProductSeniorCautionResponse.kt index 22b61013f..e81d3165d 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/senior/DurProductSeniorCautionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/senior/DurProductSeniorCautionResponse.kt @@ -56,7 +56,7 @@ class DurProductSeniorCautionResponse : DataGoKrResponse(FragmentMedicineSafeUseItemBinding::inflate) { +class DurInfoFragment : BaseFragment(FragmentDurInfoBinding::inflate) { - override val fragmentViewModel: MedicineSafeUsageViewModel by viewModels() + override val fragmentViewModel: DurInfoViewModel by viewModels() private val medicineInfoViewModel by viewModels( { @@ -59,41 +53,8 @@ class MedicineSafeUsageItemFragment : override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - binding.viewModel = fragmentViewModel - viewLifecycleOwner.repeatOnStarted { - - launch { - fragmentViewModel.dur.collect { - when (it) { - is UiState.Success -> { - LoadingDialog.dismiss() - } - - else -> { - LoadingDialog.dismiss() - } - } - } - } - - launch { - medicineInfoViewModel.medicineDetails.collect { - when (it) { - is UiState.Success -> { - it.data.also { medicineInfo -> - LoadingDialog.showLoadingDialog(requireActivity(), getString(R.string.loadingSafeUsage)) - fragmentViewModel.loadDur(itemName = null, itemSeq = medicineInfo.itemSequence) - } - } - - else -> {} - } - } - } - } - } } diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/DurInfoViewModel.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/DurInfoViewModel.kt new file mode 100644 index 000000000..ced8dc373 --- /dev/null +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/DurInfoViewModel.kt @@ -0,0 +1,58 @@ +package com.android.mediproject.feature.medicine.precautions.dur + +import androidx.lifecycle.viewModelScope +import com.android.mediproject.core.common.network.Dispatcher +import com.android.mediproject.core.common.network.MediDispatchers +import com.android.mediproject.core.domain.GetDurUseCase +import com.android.mediproject.core.model.dur.DurListItem +import com.android.mediproject.core.model.dur.DurType +import com.android.mediproject.core.ui.base.BaseViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.launch +import javax.inject.Inject + +@HiltViewModel +class DurInfoViewModel @Inject constructor( + private val getDurUseCase: GetDurUseCase, + @Dispatcher(MediDispatchers.Default) private val defaultDispatcher: CoroutineDispatcher, +) : BaseViewModel() { + + private val _durList = MutableStateFlow(State.Initial) + val durList = _durList.asStateFlow() + + fun getDur(itemSeq: String) { + viewModelScope.launch(defaultDispatcher) { + val durTypes = getDurUseCase.hasDur(itemName = null, itemSeq = itemSeq) + durTypes.onSuccess { + val durTypePos = mutableMapOf() + val durItemList = it.mapIndexed { i, durType -> + durTypePos[durType] = i + DurListItem(durType) + } + + _durList.value = State.LoadingDurTypes(durItemList) + val durListResult = getDurUseCase.getDur(itemSeq, it) + + durListResult.forEach { (durType, result) -> + durItemList[durTypePos.getValue(durType)].durItems = result + } + + _durList.value = State.Success + }.onFailure { + _durList.value = State.Error(it.message ?: "의약품 안전 사용 정보를 불러오는 중 오류가 발생했습니다.") + } + } + } +} + + +sealed interface State { + object Initial : State + data class LoadingDurTypes(val durItemList: List) : State + object LoadingDurList : State + object Success : State + data class Error(val message: String) : State +} diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/host/MedicinePrecautionsItemPageAdapter.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/host/MedicinePrecautionsItemPageAdapter.kt index e93390c95..1190eefae 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/host/MedicinePrecautionsItemPageAdapter.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/host/MedicinePrecautionsItemPageAdapter.kt @@ -3,19 +3,19 @@ package com.android.mediproject.feature.medicine.precautions.host import androidx.fragment.app.FragmentManager import androidx.lifecycle.Lifecycle import androidx.viewpager2.adapter.FragmentStateAdapter -import com.android.mediproject.feature.medicine.precautions.item.MedicinePrecautionsItemFragment -import com.android.mediproject.feature.medicine.precautions.item.MedicineSafeUsageItemFragment +import com.android.mediproject.feature.medicine.precautions.precautions.MedicinePrecautionsItemFragment +import com.android.mediproject.feature.medicine.precautions.dur.DurInfoFragment class MedicinePrecautionsItemPageAdapter( - fragmentManager: FragmentManager, lifecycle: Lifecycle + fragmentManager: FragmentManager, lifecycle: Lifecycle, ) : FragmentStateAdapter(fragmentManager, lifecycle) { private val fragments = listOf( - MedicinePrecautionsItemFragment(), MedicineSafeUsageItemFragment() + MedicinePrecautionsItemFragment(), DurInfoFragment(), ) override fun getItemCount(): Int = fragments.size override fun createFragment(position: Int) = fragments[position] -} \ No newline at end of file +} diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicineSafeUsageViewModel.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicineSafeUsageViewModel.kt deleted file mode 100644 index 193a9b191..000000000 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicineSafeUsageViewModel.kt +++ /dev/null @@ -1,35 +0,0 @@ -package com.android.mediproject.feature.medicine.precautions.item - -import com.android.mediproject.core.common.network.Dispatcher -import com.android.mediproject.core.common.network.MediDispatchers -import com.android.mediproject.core.common.viewmodel.UiState -import com.android.mediproject.core.domain.GetDurUseCase -import com.android.mediproject.core.ui.base.BaseViewModel -import dagger.hilt.android.lifecycle.HiltViewModel -import kotlinx.coroutines.CoroutineDispatcher -import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.asStateFlow -import javax.inject.Inject - -@HiltViewModel -class MedicineSafeUsageViewModel @Inject constructor( - private val getDurUseCase: GetDurUseCase, - @Dispatcher(MediDispatchers.Default) private val defaultDispatcher: CoroutineDispatcher, -) : BaseViewModel() { - - private val _elderlyCaution = MutableStateFlow(null) - val elderlyCaution get() = _elderlyCaution.asStateFlow() - - - private val _dur = MutableStateFlow>(UiState.Loading) - - val dur get() = _dur.asStateFlow() - - - fun loadDur( - itemName: String?, itemSeq: String?, - ) { - - } - -} diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicinePrecautionsItemFragment.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/precautions/MedicinePrecautionsItemFragment.kt similarity index 91% rename from feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicinePrecautionsItemFragment.kt rename to feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/precautions/MedicinePrecautionsItemFragment.kt index a1c5f8f64..b02a06a94 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/MedicinePrecautionsItemFragment.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/precautions/MedicinePrecautionsItemFragment.kt @@ -1,17 +1,16 @@ -package com.android.mediproject.feature.medicine.precautions.item +package com.android.mediproject.feature.medicine.precautions.precautions import android.os.Bundle import android.view.View import androidx.fragment.app.viewModels import com.android.mediproject.core.common.viewmodel.UiState +import com.android.mediproject.core.common.viewmodel.repeatOnStarted import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.medicine.databinding.FragmentMedicinePrecautionsItemBinding import com.android.mediproject.feature.medicine.main.MedicineInfoViewModel import com.android.mediproject.feature.medicine.precautions.host.MedicinePrecautionsViewModel -import com.android.mediproject.feature.medicine.precautions.item.precautions.PrecautionsListAdapter import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch -import com.android.mediproject.core.common.viewmodel.repeatOnStarted /** * 의약품 사용 상 주의사항 Fragment diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/precautions/PrecautionsListAdapter.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/precautions/PrecautionsListAdapter.kt similarity index 94% rename from feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/precautions/PrecautionsListAdapter.kt rename to feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/precautions/PrecautionsListAdapter.kt index e20fbe90d..592725724 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/item/precautions/PrecautionsListAdapter.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/precautions/PrecautionsListAdapter.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.feature.medicine.precautions.item.precautions +package com.android.mediproject.feature.medicine.precautions.precautions import android.text.Spanned import android.view.LayoutInflater @@ -36,4 +36,4 @@ object Diff : DiffUtil.ItemCallback() { override fun areContentsTheSame(oldItem: Spanned, newItem: Spanned): Boolean { return oldItem.contentEquals(newItem) } -} \ No newline at end of file +} diff --git a/feature/medicine/src/main/res/layout/fragment_medicine_safe_use_item.xml b/feature/medicine/src/main/res/layout/fragment_dur_info.xml similarity index 79% rename from feature/medicine/src/main/res/layout/fragment_medicine_safe_use_item.xml rename to feature/medicine/src/main/res/layout/fragment_dur_info.xml index b82341e7a..5b4aa3c23 100644 --- a/feature/medicine/src/main/res/layout/fragment_medicine_safe_use_item.xml +++ b/feature/medicine/src/main/res/layout/fragment_dur_info.xml @@ -5,16 +5,14 @@ + type="com.android.mediproject.feature.medicine.precautions.dur.DurInfoViewModel" /> - /> - \ No newline at end of file + From e8110ce009707b88af1c773c47efd9589944000c Mon Sep 17 00:00:00 2001 From: JSPark <48265129+pknujsp@users.noreply.github.com> Date: Thu, 27 Jul 2023 20:16:50 +0900 Subject: [PATCH 12/13] =?UTF-8?q?#193=20DUR=20=EC=84=B1=EB=B6=84/=ED=92=88?= =?UTF-8?q?=EB=AA=A9=20=EC=9D=91=EB=8B=B5=20=EC=A0=95=EB=B3=B4=20=EB=B3=B4?= =?UTF-8?q?=EC=97=AC=EC=A3=BC=EB=8A=94=20=ED=99=94=EB=A9=B4=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=A0=9C=EC=9E=91=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/common/paging/PagingUtil.kt | 3 +- .../core/common/recyclerview/MListAdapter.kt | 68 ++++++++++++ core/common/src/main/res/values/strings.xml | 10 -- .../mediproject/core/model/dur/DurItem.kt | 9 +- .../core/model/dur/DurItemWrapperFactory.kt | 4 +- .../mediproject/core/model/dur/DurListItem.kt | 4 + ...urProductExReleaseTabletSplitAttention.kt} | 13 ++- ...tExReleaseTabletSplitAttentionResponse.kt} | 2 +- .../datasource/dur/DurProductDataSource.kt | 4 +- .../dur/DurProductDataSourceImpl.kt | 4 +- .../datagokr/DurProductInfoNetworkApi.kt | 4 +- .../main/res/layout/viewgroup_paging_list.xml | 19 +++- .../precautions/dur/DurInfoFragment.kt | 63 ++++++----- .../precautions/dur/DurInfoViewModel.kt | 71 +++++++++++- .../medicine/precautions/dur/DurTextMapper.kt | 101 ++++++++++++++++++ .../dur/adapter/AdapterContainer.kt | 31 ++++++ .../precautions/dur/adapter/DurListAdapter.kt | 57 ++++++++++ .../dur/adapter/DurListItemAdapter.kt | 21 ++++ .../dur/adapter/DurListItemViewWrapper.kt | 34 ++++++ .../host/MedicinePrecautionsFragment.kt | 4 +- .../MedicinePrecautionsItemPageAdapter.kt | 2 +- .../host/MedicinePrecautionsViewModel.kt | 9 +- .../src/main/res/drawable/kids_ci.png | Bin 0 -> 7689 bytes .../src/main/res/layout/fragment_dur_info.xml | 18 ++-- .../fragment_medicine_precautions_host.xml | 18 ++-- .../item_view_combination_prohibition.xml | 57 ---------- ...e_with_list.xml => item_view_dur_list.xml} | 22 ++-- .../res/layout/item_view_dur_list_item.xml | 8 ++ .../item_view_safe_use_without_list.xml | 32 ------ .../medicine/src/main/res/values/strings.xml | 48 +++++++-- .../medicine/src/main/res/values/styles.xml | 10 +- 31 files changed, 548 insertions(+), 202 deletions(-) create mode 100644 core/common/src/main/java/com/android/mediproject/core/common/recyclerview/MListAdapter.kt rename core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/{DurProductExReleaseTableSplitAttention.kt => DurProductExReleaseTabletSplitAttention.kt} (63%) rename core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/{DurProductExReleaseTableSplitAttentionResponse.kt => DurProductExReleaseTabletSplitAttentionResponse.kt} (94%) create mode 100644 feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/DurTextMapper.kt create mode 100644 feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/adapter/AdapterContainer.kt create mode 100644 feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/adapter/DurListAdapter.kt create mode 100644 feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/adapter/DurListItemAdapter.kt create mode 100644 feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/adapter/DurListItemViewWrapper.kt create mode 100644 feature/medicine/src/main/res/drawable/kids_ci.png delete mode 100644 feature/medicine/src/main/res/layout/item_view_combination_prohibition.xml rename feature/medicine/src/main/res/layout/{item_view_safe_use_with_list.xml => item_view_dur_list.xml} (70%) create mode 100644 feature/medicine/src/main/res/layout/item_view_dur_list_item.xml delete mode 100644 feature/medicine/src/main/res/layout/item_view_safe_use_without_list.xml diff --git a/core/common/src/main/java/com/android/mediproject/core/common/paging/PagingUtil.kt b/core/common/src/main/java/com/android/mediproject/core/common/paging/PagingUtil.kt index 9269da187..ab748a5cd 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/paging/PagingUtil.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/paging/PagingUtil.kt @@ -30,7 +30,6 @@ fun PagingDataAdapter<*, *>.setOnStateChangedListener( progressBar.isVisible = isFirstLoad listView.isVisible = (!isFirstLoad && (loadState.source.refresh !is LoadState.Loading)) - msgTextView.isVisible = - ((!isFirstLoad && loadState.source.refresh !is LoadState.Loading) && itemCount == 0) + msgTextView.isVisible = ((!isFirstLoad && loadState.source.refresh !is LoadState.Loading) && itemCount == 0) } } diff --git a/core/common/src/main/java/com/android/mediproject/core/common/recyclerview/MListAdapter.kt b/core/common/src/main/java/com/android/mediproject/core/common/recyclerview/MListAdapter.kt new file mode 100644 index 000000000..628fb8c5f --- /dev/null +++ b/core/common/src/main/java/com/android/mediproject/core/common/recyclerview/MListAdapter.kt @@ -0,0 +1,68 @@ +package com.android.mediproject.core.common.recyclerview + +import android.widget.TextView +import androidx.core.view.isVisible +import androidx.recyclerview.widget.AsyncDifferConfig +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.ListAdapter +import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.progressindicator.CircularProgressIndicator +import kotlin.reflect.KProperty + +abstract class MListAdapter : ListAdapter { + + private var iView: IView? = null + + constructor(diffCallback: DiffUtil.ItemCallback) : super(diffCallback) + constructor(config: AsyncDifferConfig) : super(config) + + override fun onCurrentListChanged(previousList: MutableList, currentList: MutableList) { + super.onCurrentListChanged(previousList, currentList) + iView?.run { + val isFirstLoad = previousList.isEmpty() && currentList.isNotEmpty() + + progressBarIsVisible.call(isFirstLoad) + loadTextViewIsVisible.call(isFirstLoad) + msgTextViewIsVisible.call(previousList.isEmpty() && currentList.isEmpty()) + listViewIsVisible.call(currentList.isNotEmpty()) + + if (previousList.isEmpty() && currentList.isNotEmpty()) listViewScrollToPosition(0) + } + } + + fun setOnStateChangedListener( + msgTextView: TextView, + loadTextView: TextView, + listView: RecyclerView, + progressBar: CircularProgressIndicator, + emptyMsg: String, + loadMsg: String, + ) { + iView = IView(msgTextView, loadTextView, listView, progressBar, emptyMsg, loadMsg) + } + + override fun onDetachedFromRecyclerView(recyclerView: RecyclerView) { + super.onDetachedFromRecyclerView(recyclerView) + iView = null + } + + private class IView( + msgTextView: TextView, + loadTextView: TextView, + listView: RecyclerView, + progressBar: CircularProgressIndicator, + emptyMsg: String, + loadMsg: String, + ) { + val msgTextViewIsVisible: KProperty = msgTextView::isVisible + val loadTextViewIsVisible: KProperty = loadTextView::isVisible + val progressBarIsVisible: KProperty = progressBar::isVisible + val listViewIsVisible: KProperty = listView::isVisible + val listViewScrollToPosition: (Int) -> Unit = listView::scrollToPosition + + init { + msgTextView.text = emptyMsg + loadTextView.text = loadMsg + } + } +} diff --git a/core/common/src/main/res/values/strings.xml b/core/common/src/main/res/values/strings.xml index 4f1e71478..5aab4a6ea 100644 --- a/core/common/src/main/res/values/strings.xml +++ b/core/common/src/main/res/values/strings.xml @@ -62,16 +62,6 @@ 이미지 등록 일시 안전 사용 - - 병용 금기 - 특정 연령대 금기 - 임부 금기 - 용량 주의 - 투여기간 주의 - 노인 주의 - 효능군 중복 - 분할 주의 - 첨가제 주의 인터넷 연결이 필요합니다. 찾고 diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItem.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItem.kt index fd0150551..95b374710 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItem.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItem.kt @@ -1,3 +1,10 @@ package com.android.mediproject.core.model.dur -interface DurItem +import android.text.Html +import android.text.Spanned + +interface DurItem { + + val content: Spanned + +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItemWrapperFactory.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItemWrapperFactory.kt index d92b8df1b..08b39e8fe 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItemWrapperFactory.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItemWrapperFactory.kt @@ -9,7 +9,7 @@ import com.android.mediproject.core.model.dur.durproduct.dosing.DurProductDosing import com.android.mediproject.core.model.dur.durproduct.dosing.DurProductDosingCautionWrapper import com.android.mediproject.core.model.dur.durproduct.efficacygroupduplication.DurProductEfficacyGroupDuplicationResponse import com.android.mediproject.core.model.dur.durproduct.efficacygroupduplication.DurProductEfficacyGroupDuplicationWrapper -import com.android.mediproject.core.model.dur.durproduct.extendedreleasetablet.DurProductExReleaseTableSplitAttentionResponse +import com.android.mediproject.core.model.dur.durproduct.extendedreleasetablet.DurProductExReleaseTabletSplitAttentionResponse import com.android.mediproject.core.model.dur.durproduct.extendedreleasetablet.DurProductExReleaseTableSplitAttentionWrapper import com.android.mediproject.core.model.dur.durproduct.pregnancy.DurProductPregnantWomanTabooResponse import com.android.mediproject.core.model.dur.durproduct.pregnancy.DurProductPregnantWomanTabooWrapper @@ -25,7 +25,7 @@ class DurItemWrapperFactory { DurType.SENIOR_CAUTION -> DurProductSeniorCautionWrapper(response as DurProductSeniorCautionResponse) DurType.DOSING_CAUTION -> DurProductDosingCautionWrapper(response as DurProductDosingCautionResponse) DurType.EFFICACY_GROUP_DUPLICATION -> DurProductEfficacyGroupDuplicationWrapper(response as DurProductEfficacyGroupDuplicationResponse) - DurType.EX_RELEASE_TABLET_SPLIT_ATTENTION -> DurProductExReleaseTableSplitAttentionWrapper(response as DurProductExReleaseTableSplitAttentionResponse) + DurType.EX_RELEASE_TABLET_SPLIT_ATTENTION -> DurProductExReleaseTableSplitAttentionWrapper(response as DurProductExReleaseTabletSplitAttentionResponse) DurType.COMBINATION_TABOO -> DurProductCombinationTabooWrapper(response as DurProductCombinationTabooResponse) DurType.PREGNANT_WOMAN_TABOO -> DurProductPregnantWomanTabooWrapper(response as DurProductPregnantWomanTabooResponse) DurType.CAPACITY_ATTENTION -> DurProductCapacityAttentionWrapper(response as DurProductCapacityAttentionResponse) diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/DurListItem.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/DurListItem.kt index 5438e22e2..58e062aa3 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/dur/DurListItem.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/DurListItem.kt @@ -1,7 +1,11 @@ package com.android.mediproject.core.model.dur +import android.text.Spanned + class DurListItem( val durType: DurType, + val title: Spanned, + val description: Spanned, ) { var durItems: Result>? = null } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttention.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/DurProductExReleaseTabletSplitAttention.kt similarity index 63% rename from core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttention.kt rename to core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/DurProductExReleaseTabletSplitAttention.kt index fcc6fe5fc..0d9a08e86 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttention.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/DurProductExReleaseTabletSplitAttention.kt @@ -1,8 +1,10 @@ package com.android.mediproject.core.model.dur.durproduct.extendedreleasetablet +import android.text.Spanned import com.android.mediproject.core.model.dur.DurItemWrapper import com.android.mediproject.core.model.dur.DurType import com.android.mediproject.core.model.dur.durproduct.ui.DurProductItem +import com.android.mediproject.core.model.dur.toHtml /** * 서방정 분할 주의 @@ -10,16 +12,19 @@ import com.android.mediproject.core.model.dur.durproduct.ui.DurProductItem * @param itemName 품목명 * @param prohibitContent 분할금기 내용 */ -data class DurProductExReleaseTableSplitAttention( +data class DurProductExReleaseTabletSplitAttention( val itemName: String, override val prohibitContent: String, -) : DurProductItem(DurType.EX_RELEASE_TABLET_SPLIT_ATTENTION) +) : DurProductItem(DurType.EX_RELEASE_TABLET_SPLIT_ATTENTION) { + + override val content: Spanned = "$itemName\n$prohibitContent".toHtml() +} class DurProductExReleaseTableSplitAttentionWrapper( - override val response: DurProductExReleaseTableSplitAttentionResponse, + override val response: DurProductExReleaseTabletSplitAttentionResponse, ) : DurItemWrapper(response) { override fun convert() = response.body.items.map { - DurProductExReleaseTableSplitAttention( + DurProductExReleaseTabletSplitAttention( itemName = it.itemName, prohibitContent = it.prohibitContent, ) diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/DurProductExReleaseTabletSplitAttentionResponse.kt similarity index 94% rename from core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/DurProductExReleaseTabletSplitAttentionResponse.kt index 354155919..93c3ccd7a 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/DurProductExReleaseTableSplitAttentionResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/DurProductExReleaseTabletSplitAttentionResponse.kt @@ -6,7 +6,7 @@ import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -class DurProductExReleaseTableSplitAttentionResponse : DataGoKrResponse() { +class DurProductExReleaseTabletSplitAttentionResponse : DataGoKrResponse() { /** diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSource.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSource.kt index 04cbae9d6..7dc1f4066 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSource.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSource.kt @@ -6,7 +6,7 @@ import com.android.mediproject.core.model.dur.durproduct.capacity.DurProductCapa import com.android.mediproject.core.model.dur.durproduct.combination.DurProductCombinationTabooResponse import com.android.mediproject.core.model.dur.durproduct.dosing.DurProductDosingCautionResponse import com.android.mediproject.core.model.dur.durproduct.efficacygroupduplication.DurProductEfficacyGroupDuplicationResponse -import com.android.mediproject.core.model.dur.durproduct.extendedreleasetablet.DurProductExReleaseTableSplitAttentionResponse +import com.android.mediproject.core.model.dur.durproduct.extendedreleasetablet.DurProductExReleaseTabletSplitAttentionResponse import com.android.mediproject.core.model.dur.durproduct.pregnancy.DurProductPregnantWomanTabooResponse import com.android.mediproject.core.model.dur.durproduct.productlist.DurProductListResponse import com.android.mediproject.core.model.dur.durproduct.senior.DurProductSeniorCautionResponse @@ -33,7 +33,7 @@ interface DurProductDataSource { entpName: String?, typeName: String?, itemSeq: String?, - ): Result + ): Result suspend fun getEfficacyGroupDuplicationInfo( itemName: String?, diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt index ff3dacd53..55927cd69 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt @@ -6,7 +6,7 @@ import com.android.mediproject.core.model.dur.durproduct.capacity.DurProductCapa import com.android.mediproject.core.model.dur.durproduct.combination.DurProductCombinationTabooResponse import com.android.mediproject.core.model.dur.durproduct.dosing.DurProductDosingCautionResponse import com.android.mediproject.core.model.dur.durproduct.efficacygroupduplication.DurProductEfficacyGroupDuplicationResponse -import com.android.mediproject.core.model.dur.durproduct.extendedreleasetablet.DurProductExReleaseTableSplitAttentionResponse +import com.android.mediproject.core.model.dur.durproduct.extendedreleasetablet.DurProductExReleaseTabletSplitAttentionResponse import com.android.mediproject.core.model.dur.durproduct.pregnancy.DurProductPregnantWomanTabooResponse import com.android.mediproject.core.model.dur.durproduct.productlist.DurProductListResponse import com.android.mediproject.core.model.dur.durproduct.senior.DurProductSeniorCautionResponse @@ -61,7 +61,7 @@ class DurProductDataSourceImpl @Inject constructor( entpName: String?, typeName: String?, itemSeq: String?, - ): Result = + ): Result = durProductInfoNetworkApi.getExReleaseTableSplitAttentionInfo(itemName = itemName, entpName = entpName, typeName = typeName, itemSeq = itemSeq) .onDataGokrResponse() diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurProductInfoNetworkApi.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurProductInfoNetworkApi.kt index 17a0f8a7a..93fb469fc 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurProductInfoNetworkApi.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/datagokr/DurProductInfoNetworkApi.kt @@ -8,7 +8,7 @@ import com.android.mediproject.core.model.dur.durproduct.capacity.DurProductCapa import com.android.mediproject.core.model.dur.durproduct.combination.DurProductCombinationTabooResponse import com.android.mediproject.core.model.dur.durproduct.dosing.DurProductDosingCautionResponse import com.android.mediproject.core.model.dur.durproduct.efficacygroupduplication.DurProductEfficacyGroupDuplicationResponse -import com.android.mediproject.core.model.dur.durproduct.extendedreleasetablet.DurProductExReleaseTableSplitAttentionResponse +import com.android.mediproject.core.model.dur.durproduct.extendedreleasetablet.DurProductExReleaseTabletSplitAttentionResponse import com.android.mediproject.core.model.dur.durproduct.pregnancy.DurProductPregnantWomanTabooResponse import com.android.mediproject.core.model.dur.durproduct.productlist.DurProductListResponse import com.android.mediproject.core.model.dur.durproduct.senior.DurProductSeniorCautionResponse @@ -81,7 +81,7 @@ interface DurProductInfoNetworkApi { @Query("itemSeq") itemSeq: String?, @Query("type") type: String = JSON, @Query("numOfRows") numOfRows: Int = DATA_GO_KR_ROW_SIZE, - ): Response + ): Response /** * 효능군 중복 정보 조회 diff --git a/core/ui/src/main/res/layout/viewgroup_paging_list.xml b/core/ui/src/main/res/layout/viewgroup_paging_list.xml index 7d15b07fa..b75fdccf1 100644 --- a/core/ui/src/main/res/layout/viewgroup_paging_list.xml +++ b/core/ui/src/main/res/layout/viewgroup_paging_list.xml @@ -8,8 +8,8 @@ android:id="@+id/pagingList" android:layout_width="match_parent" android:layout_height="match_parent" - android:orientation="vertical" android:clipChildren="false" + android:orientation="vertical" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> + + + - \ No newline at end of file + diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/DurInfoFragment.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/DurInfoFragment.kt index d07713d18..42dc5c9cf 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/DurInfoFragment.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/DurInfoFragment.kt @@ -3,42 +3,17 @@ package com.android.mediproject.feature.medicine.precautions.dur import android.os.Bundle import android.view.View import androidx.fragment.app.viewModels +import com.android.mediproject.core.common.viewmodel.repeatOnStarted import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.medicine.databinding.FragmentDurInfoBinding import com.android.mediproject.feature.medicine.main.MedicineInfoViewModel +import com.android.mediproject.feature.medicine.precautions.dur.adapter.DurListAdapter import dagger.hilt.android.AndroidEntryPoint /** * * 의약품 적정 사용정보(DUR,Drug Utilization Review) - * - * 의약품 적정사용 정보는 부적절한 의약품 사용을 사전에 예방하고 국민건강을 보호하기 위하여, - * 의·약 전문가가 처방·조제 시 활용할 수 있도록 의약품의 안전하고 적절한 사용 기준을 항목별로 분류하여 체계적으로 개발한 정보입니다. - * - * 품목기준코드 또는 품목명으로 조회 가능 - * - * 병용금기 ◎ 두 가지 이상의 의약품을 함께 사용할 때 치료효과의 변화 또는 심각한 부작용 발생 등의 우려가 있어 동시에 사용하지 않아야 하는 의약품의 조합 - * - * 특정연령대금기 ◎ 소아, 노인 등 특정한 연령대의 환자가 사용함에 있어 안전성이 확보되지 않았거나 심각한 부작용 발생 등의 우려가 있어 사용하지 않아야 하는 의약품 - * - * 임부금기 ◎ 태아에게 매우 심각한 위해성(태아기형 또는 태아독성 등)을 유발하거나 유발할 가능성이 높아 임부에게 사용하는 것이 권장되지 않는 의약품 - * - * 1등급 : 태아에 대한 위험성이 명확하여 의학적으로 불가피한 경우 이외에는 반드시 임부에게 투여를 피해야하는 의약품 - * - * 2등급 : 태아에 대한 위해성이 나타날 수 있으므로 원칙적으로 사용금지. 다만, 임부에 대한 치료적 유익성이 위험성보다 더 높을 경우 신중하게 투여 가능한 의약품 - * - * 용량주의 ◎ 성인에서 특정용량을 초과하여 투여 시 효과의 증가는 기대하기 어렵고 용량 의존적 부작용 발생 가능성이 높아져 1일 최대용량에 대한 주의가 필요한 의약품 - * - * 투여기간주의 ◎ 특정 투여기간을 초과하여 투여 시 효과의 증가는 기대하기 어렵고 부작용 발생 가능성이 높아져 1회 최대 투여기간에 대한 주의가 필요한 의약품 - * - * 노인주의 ◎ 노인에서 부작용 발생 빈도 증가 등의 우려가 있어 사용 시 주의가 필요한 의약품 - * - * 효능군중복 ◎ 약리기전이 동일하거나 유사한 효능군 내에서 중복 투여될 때 추가적인 효과의 증가는 기대하기 어렵고 부작용 발생 가능성이 높아져 주의가 필요한 의약품 - * - * 분할주의 ◎ 분할하여 복용할 경우 허가된 약효를 기대하기 어려운 의약품 - * - * 첨가제주의 ◎ 특정 첨가제 성분(유당, 대두유, 카제인)의 주의가 필요한 의약품 - * + * - 의약품의 효능, 용법, 용량, 주의사항 등을 알려주는 정보 */ @AndroidEntryPoint class DurInfoFragment : BaseFragment(FragmentDurInfoBinding::inflate) { @@ -55,6 +30,38 @@ class DurInfoFragment : BaseFragment(F super.onViewCreated(view, savedInstanceState) binding.viewModel = fragmentViewModel + binding.apply { + val adapter = DurListAdapter().apply { + setOnStateChangedListener( + pagingListViewGroup.messageTextView, + pagingListViewGroup.loadTextView, + pagingListViewGroup.pagingList, + pagingListViewGroup.progressIndicator, + getString(com.android.mediproject.feature.medicine.R.string.dur_list_empty_message), + getString(com.android.mediproject.feature.medicine.R.string.dur_list_load_message), + ) + } + pagingListViewGroup.pagingList.adapter = adapter + + viewLifecycleOwner.repeatOnStarted { + fragmentViewModel.durList.collect { state -> + state.isInitializing { + + }.isLoadingDurTypes { + + }.isLoadingDurList { + + }.isSuccess { + adapter.submitList(it) + }.isError { + + } + } + } + + adapter.submitList(null) + fragmentViewModel.getDur(medicineInfoViewModel.medicinePrimaryInfo.replayCache.last().itemSeq.toString()) + } } } diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/DurInfoViewModel.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/DurInfoViewModel.kt index ced8dc373..4f8b2bdab 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/DurInfoViewModel.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/DurInfoViewModel.kt @@ -9,14 +9,20 @@ import com.android.mediproject.core.model.dur.DurType import com.android.mediproject.core.ui.base.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.async import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.filterNotNull +import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch import javax.inject.Inject +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.contract @HiltViewModel class DurInfoViewModel @Inject constructor( private val getDurUseCase: GetDurUseCase, + private val durTextMapper: DurTextMapper, @Dispatcher(MediDispatchers.Default) private val defaultDispatcher: CoroutineDispatcher, ) : BaseViewModel() { @@ -25,22 +31,32 @@ class DurInfoViewModel @Inject constructor( fun getDur(itemSeq: String) { viewModelScope.launch(defaultDispatcher) { + val durTitleAndDescriptions = async { + durTextMapper.durTitleAndDescriptions.filterNotNull().first() + } + val durTypes = getDurUseCase.hasDur(itemName = null, itemSeq = itemSeq) durTypes.onSuccess { + _durList.value = State.LoadingDurTypes + + val durTitleAndDescriptionMap = durTitleAndDescriptions.await() val durTypePos = mutableMapOf() + val durItemList = it.mapIndexed { i, durType -> durTypePos[durType] = i - DurListItem(durType) + DurListItem( + durType, title = durTitleAndDescriptionMap.getValue(durType).title, + description = durTitleAndDescriptionMap.getValue(durType).description, + ) } - _durList.value = State.LoadingDurTypes(durItemList) val durListResult = getDurUseCase.getDur(itemSeq, it) durListResult.forEach { (durType, result) -> durItemList[durTypePos.getValue(durType)].durItems = result } - _durList.value = State.Success + _durList.value = State.Success(durItemList) }.onFailure { _durList.value = State.Error(it.message ?: "의약품 안전 사용 정보를 불러오는 중 오류가 발생했습니다.") } @@ -51,8 +67,53 @@ class DurInfoViewModel @Inject constructor( sealed interface State { object Initial : State - data class LoadingDurTypes(val durItemList: List) : State + object LoadingDurTypes : State object LoadingDurList : State - object Success : State + data class Success(val durItemList: List) : State data class Error(val message: String) : State } + +@OptIn(ExperimentalContracts::class) +fun State.isInitializing(block: () -> Unit): State { + contract { + callsInPlace(block, kotlin.contracts.InvocationKind.EXACTLY_ONCE) + } + if (this is State.Initial) block() + return this +} + +@OptIn(ExperimentalContracts::class) +fun State.isLoadingDurTypes(block: () -> Unit): State { + contract { + callsInPlace(block, kotlin.contracts.InvocationKind.EXACTLY_ONCE) + } + if (this is State.LoadingDurTypes) block() + return this +} + +@OptIn(ExperimentalContracts::class) +fun State.isLoadingDurList(block: () -> Unit): State { + contract { + callsInPlace(block, kotlin.contracts.InvocationKind.EXACTLY_ONCE) + } + if (this is State.LoadingDurList) block() + return this +} + +@OptIn(ExperimentalContracts::class) +fun State.isSuccess(block: (List) -> Unit): State { + contract { + callsInPlace(block, kotlin.contracts.InvocationKind.EXACTLY_ONCE) + } + if (this is State.Success) block(durItemList) + return this +} + +@OptIn(ExperimentalContracts::class) +fun State.isError(block: (String) -> Unit): State { + contract { + callsInPlace(block, kotlin.contracts.InvocationKind.EXACTLY_ONCE) + } + if (this is State.Error) block(message) + return this +} diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/DurTextMapper.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/DurTextMapper.kt new file mode 100644 index 000000000..134500074 --- /dev/null +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/DurTextMapper.kt @@ -0,0 +1,101 @@ +package com.android.mediproject.feature.medicine.precautions.dur + +import android.content.Context +import android.text.Html +import android.text.Spanned +import com.android.mediproject.core.model.dur.DurType +import com.android.mediproject.feature.medicine.R +import dagger.hilt.android.qualifiers.ApplicationContext +import kotlinx.coroutines.DelicateCoroutinesApi +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.launch +import javax.inject.Inject +import javax.inject.Singleton + +@OptIn(DelicateCoroutinesApi::class) +@Singleton +class DurTextMapper @Inject constructor( + @ApplicationContext private val context: Context, +) { + + private val _durTitleAndDescriptions = MutableStateFlow?>(null) + val durTitleAndDescriptions get() = _durTitleAndDescriptions.asStateFlow() + + init { + GlobalScope.launch(Dispatchers.IO) { + val durTitleAndDescriptionMap = mutableMapOf() + + context.run { + durTitleAndDescriptionMap[DurType.DOSING_CAUTION] = DurTitleAndDescription( + createTitle(getString(R.string.dosingCaution)), + createDefinition( + getString(R.string.dosingCautionDescription), + ), + ) + + durTitleAndDescriptionMap[DurType.EX_RELEASE_TABLET_SPLIT_ATTENTION] = DurTitleAndDescription( + createTitle(getString(R.string.exReleaseTabletSplitAttention)), + createDefinition( + getString(R.string.exReleaseTabletSplitAttentionDescription), + ), + ) + + durTitleAndDescriptionMap[DurType.PREGNANT_WOMAN_TABOO] = DurTitleAndDescription( + createTitle(getString(R.string.pregnancyTaboo)), + createDefinition( + getString(R.string.pregnancyTabooDescription), + ), + ) + + durTitleAndDescriptionMap[DurType.COMBINATION_TABOO] = DurTitleAndDescription( + createTitle(getString(R.string.combinationTaboo)), + createDefinition( + getString(R.string.combinationTabooDescription), + ), + ) + + durTitleAndDescriptionMap[DurType.SENIOR_CAUTION] = DurTitleAndDescription( + createTitle(getString(R.string.seniorCaution)), + createDefinition( + getString(R.string.seniorCautionDescription), + ), + ) + + durTitleAndDescriptionMap[DurType.CAPACITY_ATTENTION] = DurTitleAndDescription( + createTitle(getString(R.string.capacityAttention)), + createDefinition( + getString(R.string.capacityAttentionDescription), + ), + ) + + durTitleAndDescriptionMap[DurType.SPECIALTY_AGE_GROUP_TABOO] = DurTitleAndDescription( + createTitle(getString(R.string.specialtyAgeGroupTaboo)), + createDefinition( + getString(R.string.specialtyAgeGroupTaboo), + ), + ) + + durTitleAndDescriptionMap[DurType.EFFICACY_GROUP_DUPLICATION] = DurTitleAndDescription( + createTitle(getString(R.string.efficacyGroupDuplication)), + createDefinition( + getString(R.string.efficacyGroupDuplicationDescription), + ), + ) + } + + _durTitleAndDescriptions.value = durTitleAndDescriptionMap + } + } + + private fun createTitle(value: String): Spanned = Html.fromHtml("• $value", Html.FROM_HTML_MODE_COMPACT) + + private fun createDefinition(value: String): Spanned = Html.fromHtml(value, Html.FROM_HTML_MODE_COMPACT) + + data class DurTitleAndDescription( + val title: Spanned, + val description: Spanned, + ) +} diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/adapter/AdapterContainer.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/adapter/AdapterContainer.kt new file mode 100644 index 000000000..0f6102b2a --- /dev/null +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/adapter/AdapterContainer.kt @@ -0,0 +1,31 @@ +package com.android.mediproject.feature.medicine.precautions.dur.adapter + +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.RecyclerView +import com.android.mediproject.core.model.dur.DurItem +import com.android.mediproject.core.model.dur.DurListItem +import com.android.mediproject.feature.medicine.databinding.ItemViewDurListItemBinding + + +class ItemInListItemCallback : DiffUtil.ItemCallback() { + override fun areContentsTheSame(oldItem: DurItem, newItem: DurItem): Boolean = oldItem.content.contentEquals(newItem.content) + + override fun areItemsTheSame(oldItem: DurItem, newItem: DurItem): Boolean = oldItem == newItem +} + + +class ListItemCallback : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: DurListItem, newItem: DurListItem): Boolean = oldItem == newItem + + override fun areContentsTheSame(oldItem: DurListItem, newItem: DurListItem): Boolean = oldItem.durType == newItem.durType +} + + +class ItemInDurListItemViewHolder( + private val binding: ItemViewDurListItemBinding, +) : RecyclerView.ViewHolder(binding.root) { + + fun onBind(durItem: DurItem) { + binding.contentTextView.text = durItem.content + } +} diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/adapter/DurListAdapter.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/adapter/DurListAdapter.kt new file mode 100644 index 000000000..8335ba962 --- /dev/null +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/adapter/DurListAdapter.kt @@ -0,0 +1,57 @@ +package com.android.mediproject.feature.medicine.precautions.dur.adapter + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.android.mediproject.core.common.recyclerview.MListAdapter +import com.android.mediproject.core.model.dur.DurListItem +import com.android.mediproject.feature.medicine.databinding.ItemViewDurListBinding + +class DurListAdapter : MListAdapter(ListItemCallback()) { + + private val itemViewPool = RecyclerView.RecycledViewPool() + private var _itemViewWrapper: DurListItemViewWrapper? = null + private val itemViewWrapper: DurListItemViewWrapper + get() = _itemViewWrapper!! + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + if (_itemViewWrapper == null) _itemViewWrapper = DurListItemViewWrapper(itemCount, parent.context) + return ViewHolder(ItemViewDurListBinding.inflate(LayoutInflater.from(parent.context), parent, false), itemViewPool, itemViewWrapper) + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + holder.onBind(getItem(position)) + } + + override fun getItemId(position: Int): Long = position.toLong() + + override fun onDetachedFromRecyclerView(recyclerView: RecyclerView) { + super.onDetachedFromRecyclerView(recyclerView) + _itemViewWrapper?.release() + _itemViewWrapper = null + itemViewPool.clear() + } + + class ViewHolder( + private val binding: ItemViewDurListBinding, + viewPool: RecyclerView.RecycledViewPool, + itemViewWrapper: DurListItemViewWrapper, + ) : RecyclerView.ViewHolder(binding.root) { + + private val contentsAdapter = DurListItemAdapter(itemViewWrapper) + + init { + binding.contentsRecyclerView.apply { + setRecycledViewPool(viewPool) + setHasFixedSize(true) + adapter = contentsAdapter + } + } + + fun onBind(item: DurListItem) { + item.durItems?.onSuccess { contentsAdapter.submitList(it) }?.onFailure { } + } + } + + +} diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/adapter/DurListItemAdapter.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/adapter/DurListItemAdapter.kt new file mode 100644 index 000000000..5394e74e3 --- /dev/null +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/adapter/DurListItemAdapter.kt @@ -0,0 +1,21 @@ +package com.android.mediproject.feature.medicine.precautions.dur.adapter + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.ListAdapter +import com.android.mediproject.core.model.dur.DurItem +import com.android.mediproject.feature.medicine.databinding.ItemViewDurListItemBinding + +class DurListItemAdapter( + private val wrapper: DurListItemViewWrapper, +) : ListAdapter(ItemInListItemCallback()) { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemInDurListItemViewHolder = ItemInDurListItemViewHolder( + wrapper.getCacheView() ?: ItemViewDurListItemBinding.inflate(LayoutInflater.from(parent.context), parent, false), + ) + + override fun onBindViewHolder(holder: ItemInDurListItemViewHolder, position: Int) { + holder.onBind(getItem(position)) + } + + override fun getItemId(position: Int): Long = position.toLong() +} diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/adapter/DurListItemViewWrapper.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/adapter/DurListItemViewWrapper.kt new file mode 100644 index 000000000..a2f8e26a1 --- /dev/null +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/adapter/DurListItemViewWrapper.kt @@ -0,0 +1,34 @@ +package com.android.mediproject.feature.medicine.precautions.dur.adapter + +import android.content.Context +import androidx.asynclayoutinflater.view.AsyncLayoutInflater +import com.android.mediproject.feature.medicine.R +import com.android.mediproject.feature.medicine.databinding.ItemViewDurListItemBinding +import java.util.Stack + +class DurListItemViewWrapper(durCount: Int, context: Context) { + private val viewCache = Stack() + + init { + AsyncLayoutInflater(context).run { + repeat(durCount + durCount / 2) { + inflate(R.layout.item_view_dur_list_item, null) { view, _, _ -> + synchronized(viewCache) { + viewCache.push( + ItemViewDurListItemBinding.bind(view), + ) + } + } + } + } + } + + fun getCacheView(): ItemViewDurListItemBinding? = synchronized(viewCache) { + if (viewCache.isEmpty()) null + else viewCache.pop() + } + + fun release() { + viewCache.clear() + } +} diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/host/MedicinePrecautionsFragment.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/host/MedicinePrecautionsFragment.kt index a9295f652..6c219c4e4 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/host/MedicinePrecautionsFragment.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/host/MedicinePrecautionsFragment.kt @@ -19,7 +19,7 @@ class MedicinePrecautionsFragment : binding.apply { precautionsViewpager.adapter = MedicinePrecautionsItemPageAdapter(childFragmentManager, viewLifecycleOwner.lifecycle) - + chipGroup.setOnCheckedStateChangeListener { group, checkedIds -> precautionsViewpager.setCurrentItem(group.indexOfChild(group.findViewById(checkedIds.first())), true) } @@ -33,4 +33,4 @@ class MedicinePrecautionsFragment : chipGroup.takeIf { it.checkedChipId == View.NO_ID }?.check(R.id.precautionsChip) } } -} \ No newline at end of file +} diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/host/MedicinePrecautionsItemPageAdapter.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/host/MedicinePrecautionsItemPageAdapter.kt index 1190eefae..6e08734d4 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/host/MedicinePrecautionsItemPageAdapter.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/host/MedicinePrecautionsItemPageAdapter.kt @@ -3,8 +3,8 @@ package com.android.mediproject.feature.medicine.precautions.host import androidx.fragment.app.FragmentManager import androidx.lifecycle.Lifecycle import androidx.viewpager2.adapter.FragmentStateAdapter -import com.android.mediproject.feature.medicine.precautions.precautions.MedicinePrecautionsItemFragment import com.android.mediproject.feature.medicine.precautions.dur.DurInfoFragment +import com.android.mediproject.feature.medicine.precautions.precautions.MedicinePrecautionsItemFragment class MedicinePrecautionsItemPageAdapter( fragmentManager: FragmentManager, lifecycle: Lifecycle, diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/host/MedicinePrecautionsViewModel.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/host/MedicinePrecautionsViewModel.kt index 1ec5b6029..16a0cb7f2 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/host/MedicinePrecautionsViewModel.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/host/MedicinePrecautionsViewModel.kt @@ -18,7 +18,7 @@ import javax.inject.Inject @HiltViewModel class MedicinePrecautionsViewModel @Inject constructor( - @Dispatcher(MediDispatchers.Default) private val defaultDispatcher: CoroutineDispatcher + @Dispatcher(MediDispatchers.Default) private val defaultDispatcher: CoroutineDispatcher, ) : BaseViewModel() { private val _precautions = MutableStateFlow>(emptyList()) @@ -30,9 +30,7 @@ class MedicinePrecautionsViewModel @Inject constructor( */ fun createPrecautionsTexts(xmlParsedResult: XMLParsedResult) { viewModelScope.launch(defaultDispatcher) { - val stringBuilder = WeakReference(StringBuilder()) - - stringBuilder.get()?.also { builder -> + WeakReference(StringBuilder()).get()?.also { builder -> val list = mutableListOf() xmlParsedResult.articleList.forEach { article -> @@ -52,9 +50,8 @@ class MedicinePrecautionsViewModel @Inject constructor( list.toList() } } - stringBuilder.clear() } } -} \ No newline at end of file +} diff --git a/feature/medicine/src/main/res/drawable/kids_ci.png b/feature/medicine/src/main/res/drawable/kids_ci.png new file mode 100644 index 0000000000000000000000000000000000000000..7e7357e4c7bf1365c74154cf495454504d609440 GIT binary patch literal 7689 zcma)>Ra6vEw}5BJp+UMCS_DCmmKtCH5g58lY80ef1c9MDrCYkYQ|T^A>1OE8>;K=U z`*vTxea>2YopT=c+Gnl(g}{{M@UW?{0RRA=g1n3x004yiTYm$g{^Kfp%Ey0!(pgr= zS>4Xk+0E3^0w85>_tAnu;ftx2g_?z_xrf7m#XA516#)C7A)8#?ba{6V5K~<_Ou0G0 z9N%QVd3>Z+H*1>VdwRUJ42x&fw$kVwLy^+RZRrfiDF!4Yd!*(XAtC_R#kkttiI%0<(!pYM9G= zzI&Yh%X)Tx`S9@Y^zb~n0e7g79a`pm^Hmn;Y7^7nn^0Cav$kndR`Bq24-5|lW|e%X zvoD?$dOigL)ulVfXMj>FwFAQt8~4Ot;`>L(XV*8kkGC&_wWM02CKi{MHuo@P^?fo6 zjxVnk&o2N!TNd{Y1U_0n-rWw&E*$US=MD)0g*bqDHP|wmmA!)l3ls}$TOR{sTBm04 z-|OAp-zvpO0t7w)gAwE^hDWED&sTu%>3Kka&)(_js|a{lQN{h^lg3Zomqylh5lP%; z_MvS;yJsY3jdq=Xcvv+IACJ+uPmb%ib{;Qq)Lgui8`|P)qnd`sD!YEK9UqS@G4eO| zs@i?gMSjJ4dI15eervS4G3Gd|KWkudZ)zAFfYPdgqsU%gfypGCWf<_D?R+ zS#pos)4qBUTQv7A61|ud;Tm^D^3=tC zdH;zz7_I`=jpm|`fw054)DemL&C`+~d6qm`MO{;U1KB;4AuTiVG88{gjMSVk``y9Q zZrRxc+M|UJmLl_-+H3uL!tFaAY;kXYqF>ZJIXoo=2{7{|yIHoMf3>yC50NT<3?s{B zgb@{kG!ex`|G)tu&Hnr!gu-MCQ~m=+4Wi=w|KR_mG|27Z>u{osxiu2my=~;eP-VGf zBEnd*poCtGU3c6g-Hs&~_js8}*P>+SOiBEnThGVN7Z(D@p7|teDNs0y>HT<2KxhG3 zV2}!bNBjA~Z4ZH$sMn1z>iM(RjszY^p$o9?Aq7ibM#+x05};yXMl<$!Zu!}>LlC92 zNT2C}Bx08LV2$X?;cZD^3iHCK@Yt%eYPUrNdQ*czJO%i_Nl@h_F%srS2+vMZulp-j zo{y|0T}^}lAKt&GdM!Z*x7HVNfj>XduiS?j({E~8wlUUHpzS66IeI|;`SRt9g3!~q z)cA|b9=EpXhU2^+-d88aae*p^BF?+xPZi=Pok2b~TijPgrL@b5S0rNf;3yxu zx*9+B@o}DrTkU&n_##@3?4PfRdzRapCC;AkveG7syEq|6M@J75FA>v#>BC_9_xBAe zuXQd~$D`<%#I0wqkOy==%Cd9RkRqJ5hmJ@LKlDse60i2V-Tg5fY;pH{r1-bH*L08D zsrTe~iyb~oS3c@Zmww~R0Vj)@Wltz2$LH;CZBHi$ZV~zs7B`le3$i_d5p>@!_iv0N z+NHN#aY!M;PGeSbIQTPUUiN?fD9qu%6ZX8U5+vtB@$31%I&-?=^OLbP0h@rC<q^*zhJup^Q+GtAU^ykxB)4so6=li802dw4vZkn=luOMrq zKfwr0x+h%ix4F-u)SIZ)*ba8r*O>HPCp`&rku<{hedyVBn7zl4mE!FXrK>weP4H2Pw;#ShIs z&*N`RNxD?D3PE4xZazO}gF^|#XLiEOj9VW~o}&pmIQpc1hglFk{VNbf&bR1C-!#c+ z7!ai@Rhtt{5Bu?P2?YFB0%#t!=1)guDaJf&KZdi1e?wtPQ=Ng$&caVMkW?P`P}~WWe(E82CN# zCtOPrc1YM`S*a)Mf7(qlhelrk=Y46#(!XP(#P!;!UcFf=An@JAP>gh-B+^X_LwNIW zLxrFvwCwm-3=_RxgZo3C+vi>rZaV#%n0lB)W+Q%E#2tS_V-g{e4 z)&Myu#-Uv|0_TKPh&}$MZDY#Oqe)qqgSK_Tuikwj%Ialq!WOU`&IiY(O==E4rU@`M zlKDuO9UvYgL8OcBbZtmoHrb^{zl@TrK;|z+$p}~sVedVvWIMr7=kcWO`dEK5@H$8g zUr`#(wm^_Av6QyXpue-Eg8ur8PM}CLlXL1gcLp^trI%~4&G)m@Q|&&9)vKY&G)HN{_Teg`XX}bSlI>owQuzc)0|`CqxpCSl@m(`)on|LB-N=@ z+}{PDZVz&AfKn)Y3G{=iG4rgxgr~qUGeKGk?z(jp^ z;MWjZvFb^ zIy%Mx!nJP7fXv491**Q|Wm??E;Y%0ZQeyKsrsSO#CR_}qC@=ooSBJGHJZN-*;Rf1M zZVxx7DiUJe4|xj5;d_UIu7`7@DadP;Oz}1ndPQm1t8zmeH;eh!!|#UkI5p(?TD@`g zkbpQ+O@1d;XkFrv8!LvC$E|0i$rsKYDqL-f^fiiSkkQ*59MnTj#mec^i!%AzoF=^m zEsjC8fLxnEeojRPw4hA;omocO_IU@h-wxPDqL&d>HxXmRxac5R4dr>z{7Fly844s{ ztBE01U-viYYKasLMEOyW_j{PZsVK>L6CG(OMK%|$D3u;;kbk1mZozH^_eZ3JRP5cy zJq*O0_bm-`!~hfN{bor|O}TQ)#YIbJh0`#F{kp@(-2ea+FIH1fR&mkPt#<6sruDTc zK?-V+2jgK`;XaKlOlG$rJ$u0O(4IZX_bi>cXYUg6L%f}GE8D;iNJ{0B;ydzI8b*Tr z`Mx2Ck|^cdcZJ=RSS7SLrtp^AZ zY~I`i`CZ(>Q*zmNED@G1^3|Sf&|RB+_Ccrva}S|45ZniAi2+HyE~9)+_`vi@loXY! z|7rpaN}Y+fEK7$sVs$Cgi#p_@{MItcK8qZeGKFK4y0j?Bg-jIC{NZg$3w z%q8dUz{NkNx;z_-YLcYpHWp`BfWS)O7VvKi+rHi@pOj?4h=~5r+hMOb){E61oYgOr z8ykJ2LfNNC)v{~r+S^-O+gqR1@P`QB5FzYsZf9Q3Vb@)`>X-&I$nZTHIrcyh<%T<6 zza)tWU%1Ns>-Jvz8)IUEw8K9_89(*L@bOsvYIld35)KgJ$xfU;G)I`b1`y`FV3XEdOZ~iIgEYWWBMcq$ z)Hy!&az8$Q9eXNOiB39+q}kz4jR?Z<8YFHiod#h}pL_}@!W4a4 z{tcS^=khSi1+mkg0~FvWB2VP+;EHL_5TSU}>Bh1`gjq13{2;L^*_xSLe^vA%>anq{ z43xO^s_QpL3QW++avAgu1YQC9ccJ?NAh-RBybxPKNBs}1AY1!FcR32vA56I%i4Lq; zym%d-rHMUqI5OXs1j!O02)5a7o3HZi^uOsrgzp%7w%SC*?tftsoH>N zHp3ipr=17GYR+u9lt>{XCe2kDAxfrLV_~pDNtXQ6Xq(nF_^S=97o+c`gp!;HBS0lJ zY0M$MIswe7XZ@{VLS);>A%le8Nu*1OQERD1Q!zQ8HWt|{5iCeb$gqc2ZQ{qmSG>=X_chSE_d8Q&rpt9`$fLcSqxZt?rz!7-n;ps= z3f#bVF8P_38?e91Z)H{PRCLA<-KopUgghMQBeuTg*N2Fjt~uy(=$0txrH1}^4OkH| zjbvb!cT@p^O&c^#5S+;`%3qG{Zd}$z{UxNQx4WLd)I;X$41|`Wc1OX+H4qr;Z`%Ri zqrpX5fAAG!NE&y+l)?3IN@gFw%Ecbgj>f@d0J-G*+EHa^oc8qmVVCOYv1$BphPaM)5e5P2+NZR{R(YW4A)IKq<6>7Uyhv#3vS9_;;xli^9(M(erXJ?L-ZpwVWtC>Syk;XD-7oR?$6KZwt*+EyQ-~@#{ z#*qQI3POgM=bG|ga|plF6r0|T3!hBAVh*#GD5k~S;%jF zL3jKog%o@mH;*D!fU7FtOm$%>b^zt#t6bsqFNx==#?h2d2c%we`6|zrzwgeul~U_( zBFmY9O>GEx^$6M#G#(wKVur{g_?#4FtFdPC{l!AmMEGD6t7A_%fNCqJZK;q4vX&C` z^HC^$cziPaQFT5B=^cAMG;>I)?Ik#6J1MCkoOJ%;WmPY3Eq_K9GHL)cA5VV8+?(PI zH{w_1bB?1^`xJzMw2v_aWw$$Y9Gc9Lkw8HFs)=d*6hGwX=s0FyBeaHEo!O)uVdV9; zNg<{7&6`|Adf{$MZR<}wVyl>F4qP`Qp)KSqzDtH6*?59CC})|G#;Z94H^LOAahUIu zB5H^$m{}A1B~HGwRE>{Cqpm&2zAA`Tc3R$Jx!g;=5U{fj0IQLo-Hx)J-8Xh=8wj+V zH!lWj?$!{~@MGUk)`gun&v$*hp)gvKiaq3$3$kOU%bqJrcpKa;Xp*o55KEZjU{4TRRcc%1W(gocTcacZ?@r7 z3kqr_9F~uD#OkZgB`L=>sDbOBA1yt9;9&y|)by4fm84YrU3mLwNwwcAaMQiut)5J0 zUVI68lS&{$yd^Aa?~c0$$thU2Yxp|bi#>!_I7qf1qiSO&I-O+xDxn?MxTMK`(ow`i zioPO&%jmYCb#lj#X)Zh2%MK$jmQT2;3|z4m^-%(I{$KQb9@WI&3|M z!tc9tHrw`_Z~vUSqLVa_2Q|!($AD#Q@hl0I2{(j$Tjt~g>i!dEcvqJ5o3?~}-O*X|dv88oGt$9jEaPMzA*m|oXa%hs+3wZ( z?BoQU)O=_MwFqF#R(=XxdnSe+#Im{JFJ=I zaA&b!irT+gJ(LN)_x!Ab z`z{24OZMf$=UVIY9841X_#oU&!+z}qj?BoPi`m?@^E8o57y1RnO|4Q@&%xt84~bqP z6c+I=+}Fch3@fm$PSeEF*K!|qWdgjQe_Aj)6}F%w=dw|qeOei#qoVw%rX$ zQX6J<7_x$T+t#*MN%raamxzd}`;_$_?)52=C1|ctL%BDU75jDHx1b!z#vX~^Nd>=r zGoyL`9|1N-*#Pzlg?@!)j1iu#Je_h8E4u9Xn@Lm-+VryWr^0S!sb3) zbgMdB?Fz%Z<~o_PDK`{-ZPa>mSW}{fv|hzy-NQMxLq0x2qtIQ{2buQ{ zNpyTYaT;(^YLWdtY;ehPHV}_PK2!X!6Qh{w%QET2jf+JHwAwqiUzOGVcUZ*D14ov0 zRpu|1Nv-6B5QR@xSGj!ctz_X)xUVIy!ck5eAKkaw>f!K`p!qYja&`r127yu`b(vPl z0HVO)4a7|~iqC*Tb6TDp`w^L$0lhrc>Gr$}`Zt4v3ZF;)xBO6^7`HEs*SPVz#j`kx8 z@pv_hCL2G~&5z^e&b8v=En~9lWKunK<87p=4Q?+`dA`98ZR6`tv3f&MmP1hpw|L+q zvgcJu_M}#&wH~K9l|dGEcXxaF%T`MMde7_yn^3g$*S%du$Uz9HzPU9tj~lvr9REGU z>OTACv^_izTn^z*?x5|iOjthJC=m+9K-e3ye3F93a>jp zMrwgGlLE}}<}TAX;R9+Uh;EKuw@*HKux`V8N7Y-L88k|05+$F|wxYiFN8)T4C!~3j}i4u9SC#=g}izl{&W9 znz#-Efw4pwEVpIvp*&3m%xuS+-uZ`?lt;q^l5k$v$B{>rGA_Sp<1N$241}j{XR0CY zJYIIhj4e`&1L3A2RU5|(@wY7S5-~++z?C`G&_XB6h_G3eT=*8f^@yH^<_8Aw45#fv zDtnNwE8B~jjxWPuet8G=WS@qQD*N1qBz_1TD``^fn5V}$e;gQ67jHf+#vvtL=$;br z3AvUlvA23Dg#w||$BeWidqXG%XFE7?96Do6himc@M(tZ5yx_#D@gLf}@Kgvb7C}oQ zLAFT~d2{k@)#UOp=wEXwiSZaaYX?}|yOp-_y-!g+H6wJjZC7phIchkRWN^+{v#N}?j4Vrk;8kJy7eRA z-}G*QZ+i1w`VY>amzi8&?B_mW*da;5E;Ty+R-AUh5nO|f4juqOcbQu3fqf!A3&rtR zRSuHv_}E(OFPk6?wzm{L88E3g7a8UJZ*b7#q@>`AQF=xd2O+RHtBe|_QROXoI7PPD zXYMycGEZzW@SxA)HY2&Vf&V6TjC|b5;m{&-#Igp3-T9<9d%$Yn$}|bGzv?G*kIa=y zUA^(NEZ7`mWj@m+2J%T<27=m*s;xbo_8bkP>{(KVp;#$s=%x$-m%N4r3h9bBzI&UP zb0!iO(uS_Y2%3ze1W$cZTntp-4C5}e$ipl>vG?ABhfC9;as*>fZx5LMHPqVKU4qi| z$oB(O;)2-t5y7P*e<*l{=zWnhu8Vo|HR^||wOFyic3)wRenk8txzP3C?M(daI=GBp z{Fau|9@3ESvRs9_rOvK_&p$q8O3j^BLmhp|qe$B^*X_LfFw1dL)`NJ~)tFxernQ$C zRTwJX*m#Gp8k;-U-D{i5eC1d9wSu*|0y&Bln1$>WIGUS5$J(2Ahzybpn=Jfp%-XGr za);3j*OXb1As&LWT3z;4+}m5rLZ1xs;eB(tg?K5Vn|>vIz`x~3yFWz_7B-D#*md$u z{vh?q!p0}430@Iwec$S1K%B5sxcI%;TDFzGzW?=s)xVl!wVujOhg4h`=dI_mmM)sG zZt7dg-Xnb(XiG9WOS(yDyNc3|z=JuZF8}|E8%7PK{}neNP4)kZ8xF{f#(&*TDD3~4 ha`K%0nE6lD>JswMkImE>8e*k~P?Ct;n literal 0 HcmV?d00001 diff --git a/feature/medicine/src/main/res/layout/fragment_dur_info.xml b/feature/medicine/src/main/res/layout/fragment_dur_info.xml index 5b4aa3c23..0c897ab58 100644 --- a/feature/medicine/src/main/res/layout/fragment_dur_info.xml +++ b/feature/medicine/src/main/res/layout/fragment_dur_info.xml @@ -1,5 +1,5 @@ - + @@ -8,11 +8,17 @@ type="com.android.mediproject.feature.medicine.precautions.dur.DurInfoViewModel" /> - + android:layout_height="match_parent"> + + + + + diff --git a/feature/medicine/src/main/res/layout/fragment_medicine_precautions_host.xml b/feature/medicine/src/main/res/layout/fragment_medicine_precautions_host.xml index 5e72c0427..08640b2e2 100644 --- a/feature/medicine/src/main/res/layout/fragment_medicine_precautions_host.xml +++ b/feature/medicine/src/main/res/layout/fragment_medicine_precautions_host.xml @@ -3,9 +3,7 @@ + android:layout_height="match_parent"> + app:singleSelection="true"> + android:text="@string/precautions" /> + android:text="@string/safeUseOfMedicine" /> @@ -43,9 +38,8 @@ android:layout_height="0dp" android:layout_marginTop="8dp" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintTop_toBottomOf="@id/chipGroup" - /> + app:layout_constraintTop_toBottomOf="@id/chipGroup" /> - \ No newline at end of file + diff --git a/feature/medicine/src/main/res/layout/item_view_combination_prohibition.xml b/feature/medicine/src/main/res/layout/item_view_combination_prohibition.xml deleted file mode 100644 index 5acf96530..000000000 --- a/feature/medicine/src/main/res/layout/item_view_combination_prohibition.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/feature/medicine/src/main/res/layout/item_view_safe_use_with_list.xml b/feature/medicine/src/main/res/layout/item_view_dur_list.xml similarity index 70% rename from feature/medicine/src/main/res/layout/item_view_safe_use_with_list.xml rename to feature/medicine/src/main/res/layout/item_view_dur_list.xml index eda7bea22..9b9c38705 100644 --- a/feature/medicine/src/main/res/layout/item_view_safe_use_with_list.xml +++ b/feature/medicine/src/main/res/layout/item_view_dur_list.xml @@ -4,30 +4,27 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingHorizontal="16dp" - android:paddingVertical="12dp" - > + android:paddingVertical="12dp"> + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toBottomOf="@+id/title" /> + app:layout_constraintTop_toBottomOf="@id/description" /> - \ No newline at end of file + diff --git a/feature/medicine/src/main/res/layout/item_view_dur_list_item.xml b/feature/medicine/src/main/res/layout/item_view_dur_list_item.xml new file mode 100644 index 000000000..ade8f2cad --- /dev/null +++ b/feature/medicine/src/main/res/layout/item_view_dur_list_item.xml @@ -0,0 +1,8 @@ + + diff --git a/feature/medicine/src/main/res/layout/item_view_safe_use_without_list.xml b/feature/medicine/src/main/res/layout/item_view_safe_use_without_list.xml deleted file mode 100644 index bb6f2759c..000000000 --- a/feature/medicine/src/main/res/layout/item_view_safe_use_without_list.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/feature/medicine/src/main/res/values/strings.xml b/feature/medicine/src/main/res/values/strings.xml index 6c6428f77..8e465224e 100644 --- a/feature/medicine/src/main/res/values/strings.xml +++ b/feature/medicine/src/main/res/values/strings.xml @@ -9,16 +9,41 @@ 의약품 정보 식별 정보 + 의약품 적정 사용정보(DUR, Drug Utilization Review) + 부적절한 의약품 사용을 사전에 예방하고 국민건강을 보호하기 위하여, 의·약 전문가가 처방·조제 시 활용할 수 있도록 의약품의 안전하고 적절한 사용 + 기준을 항목별로 분류하여 체계적으로 개발한 정보입니다. + + 병용금기 + 두 가지 이상의 의약품을 함께 사용할 때 치료효과의 변화 또는 심각한 부작용 발생 등의 우려가 있어 동시에 사용하지 않아야 하는 의약품의 조합 + + 특정연령대금기 + 소아, 노인 등 특정한 연령대의 환자가 사용함에 있어 안전성이 확보되지 않았거나 심각한 부작용 발생 등의 우려가 있어 사용하지 않아야 하는 의약품 + + 임부금기 + 태아에게 매우 심각한 위해성(태아기형 또는 태아독성 등)을 유발하거나 유발할 가능성이 높아 임부에게 사용하는 것이 권장되지 않는 의약품 + 1등급 + 태아에 대한 위험성이 명확하여 의학적으로 불가피한 경우 이외에는 반드시 임부에게 투여를 피해야하는 의약품 + 2등급 + 태아에 대한 위해성이 나타날 수 있으므로 원칙적으로 사용금지. 다만, 임부에 대한 치료적 유익성이 위험성보다 더 높을 경우 신중하게 투여 가능한 의약품 + + 용량주의 + 성인에서 특정용량을 초과하여 투여 시 효과의 증가는 기대하기 어렵고 용량 의존적 부작용 발생 가능성이 높아져 1일 최대용량에 대한 주의가 필요한 의약품 + + 투여기간주의 + 특정 투여기간을 초과하여 투여 시 효과의 증가는 기대하기 어렵고 부작용 발생 가능성이 높아져 1회 최대 투여기간에 대한 주의가 필요한 의약품 + + 노인주의 + 노인에서 부작용 발생 빈도 증가 등의 우려가 있어 사용 시 주의가 필요한 의약품 + + 효능군중복 + 약리기전이 동일하거나 유사한 효능군 내에서 중복 투여될 때 추가적인 효과의 증가는 기대하기 어렵고 부작용 발생 가능성이 높아져 주의가 필요한 의약품 + + 분할주의 + 분할하여 복용할 경우 허가된 약효를 기대하기 어려운 의약품 + + 첨가제주의 + 특정 첨가제 성분(유당, 대두유, 카제인)의 주의가 필요한 의약품 - 두 가지 이상의 의약품을 함께 사용할 때 치료효과의 변화 또는 심각한 부작용 발생 등의 우려가 있어 동시에 사용하지 않아야 하는 의약품의 조합 - 소아, 노인 등 특정한 연령대의 환자가 사용함에 있어 안전성이 확보되지 않았거나 심각한 부작용 발생 등의 우려가 있어 사용하지 않아야 하는 의약품 - 태아에게 매우 심각한 위해성(태아기형 또는 태아독성 등)을 유발하거나 유발할 가능성이 높아 임부에게 사용하는 것이 권장되지 않는 의약품 - 성인에서 특정용량을 초과하여 투여 시 효과의 증가는 기대하기 어렵고 용량 의존적 부작용 발생 가능성이 높아져 1일 최대용량에 대한 주의가 필요한 의약품 - 특정 투여기간을 초과하여 투여 시 효과의 증가는 기대하기 어렵고 부작용 발생 가능성이 높아져 1회 최대 투여기간에 대한 주의가 필요한 의약품 - 노인에서 부작용 발생 빈도 증가 등의 우려가 있어 사용 시 주의가 필요한 의약품 - 약리기전이 동일하거나 유사한 효능군 내에서 중복 투여될 때 추가적인 효과의 증가는 기대하기 어렵고 부작용 발생 가능성이 높아져 주의가 필요한 의약품 - 분할하여 복용할 경우 허가된 약효를 기대하기 어려운 의약품 - 특정 첨가제 성분(유당, 대두유, 카제인)의 주의가 필요한 의약품 이 약을 복용(사용)하는 동안 다음의 행위를 하지 말 것 @@ -31,6 +56,9 @@ 즐겨찾기 버튼 안전 사용 정보를 불러오는 중입니다 제공된 의약품 사진 없음 + • 건트라셋세미서방정\nTramadol+Acetaminophen\n\n12세 미만소아에서 생명에 치명적인 호흡 억제 및 사망 발생 + DUR 정보가 없어요 + DUR 정보를 불러오고 있어요 - \ No newline at end of file + diff --git a/feature/medicine/src/main/res/values/styles.xml b/feature/medicine/src/main/res/values/styles.xml index b80a2410c..2a8ce1eb6 100644 --- a/feature/medicine/src/main/res/values/styles.xml +++ b/feature/medicine/src/main/res/values/styles.xml @@ -6,4 +6,12 @@ 0dp 0dp - \ No newline at end of file + + + + From 4e6259757f6e5f3cdd2b6456148b81058e55553c Mon Sep 17 00:00:00 2001 From: JSPark <48265129+pknujsp@users.noreply.github.com> Date: Fri, 28 Jul 2023 02:15:47 +0900 Subject: [PATCH 13/13] =?UTF-8?q?#193=20DUR=20=EC=84=B1=EB=B6=84/=ED=92=88?= =?UTF-8?q?=EB=AA=A9=20=EC=A0=95=EB=B3=B4=20=ED=91=9C=EC=8B=9C=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=A0=9C=EC=9E=91=201=EC=B0=A8=EC=99=84=EB=A3=8C,?= =?UTF-8?q?=202=EC=B0=A8=EB=A1=9C=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83?= =?UTF-8?q?=20=EC=88=98=EC=A0=95=20=EC=98=88=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com.android.mediproject/AndroidCompose.kt | 7 +- .../core/common/recyclerview/MListAdapter.kt | 29 ++++--- .../durproduct/DurProductRepositoryImpl.kt | 27 +++--- .../core/model/dur/DurItemWrapperFactory.kt | 6 +- .../mediproject/core/model/dur/DurType.kt | 10 ++- .../combination/DurIngrCombinationTaboo.kt | 6 +- .../capacity/DurProductCapacityAttention.kt | 22 ++++- .../combination/DurProductCombinationTaboo.kt | 21 ++++- .../dosing/DurProductDosingCaution.kt | 22 ++++- .../DurProductEfficacyGroupDuplication.kt | 22 ++++- ...DurProductExReleaseTabletSplitAttention.kt | 20 ++++- .../pregnancy/DurProductPregnantWomanTaboo.kt | 25 +++++- .../productlist/DurProductListResponse.kt | 20 +---- .../senior/DurProductSeniorCaution.kt | 22 ++++- .../DurProductSpecialtyAgeGroupTaboo.kt | 48 +++++++++++ .../specialtyagegroup/DurSpecialtyAgeGroup.kt | 28 ------ .../medicinedetailinfo/MedicineDetail.kt | 3 - .../MedicineDetailInfoResponse.kt | 2 - core/network/build.gradle.kts | 1 + .../core/network/ResponseWrapper.kt | 5 +- .../datasource/dur/DurProductDataSource.kt | 2 +- .../dur/DurProductDataSourceImpl.kt | 46 +++++----- .../core/network/module/DataGoKrNetwork.kt | 6 +- .../core/network/module/NetworkModule.kt | 2 +- .../core/network/module/ServerNetwork.kt | 17 +++- .../core/network/DurDataSourceTest.kt | 54 ++++++++++++ feature/medicine/build.gradle.kts | 3 + .../feature/medicine/ExampleUnitTest.kt | 17 ++++ .../precautions/dur/DurInfoFragment.kt | 8 +- .../precautions/dur/adapter/DurListAdapter.kt | 2 + .../main/res/layout/item_view_dur_list.xml | 85 +++++++++++-------- .../feature/medicine/MListAdapterTest.kt | 21 +++++ gradle/libs.versions.toml | 4 +- 33 files changed, 447 insertions(+), 166 deletions(-) create mode 100644 core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTaboo.kt delete mode 100644 core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/specialtyagegroup/DurSpecialtyAgeGroup.kt create mode 100644 core/network/src/test/java/com/android/mediproject/core/network/DurDataSourceTest.kt create mode 100644 feature/medicine/src/androidTest/java/com/android/mediproject/feature/medicine/ExampleUnitTest.kt create mode 100644 feature/medicine/src/test/java/com/android/mediproject/feature/medicine/MListAdapterTest.kt diff --git a/build-logic/convention/src/main/kotlin/com.android.mediproject/AndroidCompose.kt b/build-logic/convention/src/main/kotlin/com.android.mediproject/AndroidCompose.kt index 75cb47c23..6000f8f35 100644 --- a/build-logic/convention/src/main/kotlin/com.android.mediproject/AndroidCompose.kt +++ b/build-logic/convention/src/main/kotlin/com.android.mediproject/AndroidCompose.kt @@ -23,6 +23,11 @@ internal fun Project.configureAndroidCompose( compose = true } + defaultConfig { + minSdk = libs.findVersion("minSdk").get().toString().toInt() + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + composeOptions { kotlinCompilerExtensionVersion = libs.findVersion("kotlinCompilerExtension").get().toString() } @@ -59,4 +64,4 @@ private fun Project.buildComposeMetricsParameters(): List { metricParameters.add("plugin:androidx.compose.compiler.plugins.kotlin:reportsDestination=" + reportsFolder.absolutePath) } return metricParameters.toList() -} \ No newline at end of file +} diff --git a/core/common/src/main/java/com/android/mediproject/core/common/recyclerview/MListAdapter.kt b/core/common/src/main/java/com/android/mediproject/core/common/recyclerview/MListAdapter.kt index 628fb8c5f..71cc5a003 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/recyclerview/MListAdapter.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/recyclerview/MListAdapter.kt @@ -1,16 +1,16 @@ package com.android.mediproject.core.common.recyclerview +import android.util.Log +import android.view.View import android.widget.TextView -import androidx.core.view.isVisible import androidx.recyclerview.widget.AsyncDifferConfig import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import com.google.android.material.progressindicator.CircularProgressIndicator -import kotlin.reflect.KProperty abstract class MListAdapter : ListAdapter { - + private var init = true private var iView: IView? = null constructor(diffCallback: DiffUtil.ItemCallback) : super(diffCallback) @@ -19,14 +19,17 @@ abstract class MListAdapter : ListAdapter, currentList: MutableList) { super.onCurrentListChanged(previousList, currentList) iView?.run { - val isFirstLoad = previousList.isEmpty() && currentList.isNotEmpty() + Log.d( + "MListAdapter", "previousListEmpty : ${previousList.isEmpty()}, currentListEmpty : ${currentList.isEmpty()}", + ) - progressBarIsVisible.call(isFirstLoad) - loadTextViewIsVisible.call(isFirstLoad) - msgTextViewIsVisible.call(previousList.isEmpty() && currentList.isEmpty()) - listViewIsVisible.call(currentList.isNotEmpty()) + msgTextViewIsVisible(if (!init and previousList.isEmpty() and currentList.isEmpty()) View.VISIBLE else View.GONE) + loadTextViewIsVisible(if (init) View.VISIBLE else View.GONE) + progressBarIsVisible(if (init) View.VISIBLE else View.GONE) + listViewIsVisible(if (currentList.isNotEmpty()) View.VISIBLE else View.GONE) - if (previousList.isEmpty() && currentList.isNotEmpty()) listViewScrollToPosition(0) + if (previousList.isEmpty() and currentList.isNotEmpty()) listViewScrollToPosition(0) + init = false } } @@ -54,10 +57,10 @@ abstract class MListAdapter : ListAdapter = msgTextView::isVisible - val loadTextViewIsVisible: KProperty = loadTextView::isVisible - val progressBarIsVisible: KProperty = progressBar::isVisible - val listViewIsVisible: KProperty = listView::isVisible + val msgTextViewIsVisible: (Int) -> Unit = msgTextView::setVisibility + val loadTextViewIsVisible: (Int) -> Unit = loadTextView::setVisibility + val progressBarIsVisible: (Int) -> Unit = progressBar::setVisibility + val listViewIsVisible: (Int) -> Unit = listView::setVisibility val listViewScrollToPosition: (Int) -> Unit = listView::scrollToPosition init { diff --git a/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepositoryImpl.kt index 2510288e8..407b12d37 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/dur/durproduct/DurProductRepositoryImpl.kt @@ -7,7 +7,6 @@ import com.android.mediproject.core.model.dur.DurType import com.android.mediproject.core.network.datasource.dur.DurProductDataSource import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow -import kotlinx.coroutines.flow.last import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import javax.inject.Inject @@ -23,12 +22,8 @@ class DurProductRepositoryImpl @Inject constructor( override fun hasDur(itemName: String?, itemSeq: String?): Flow>> = channelFlow { val response = durProductDataSource.getDurProductList(itemName = itemName, itemSeq = itemSeq) response.onSuccess { - if (it.body.items.isNotEmpty()) { - val durTypeList = it.body.items.map { item -> DurType.valueOf(item.typeName) } - send(Result.success(durTypeList)) - } else { - send(Result.failure(Throwable("No Dur"))) - } + val durTypeList = it.body.items.firstOrNull()?.typeNames?.map { type -> DurType.typeOf(type) } ?: emptyList() + send(Result.success(durTypeList)) }.onFailure { send(Result.failure(it)) } @@ -39,16 +34,18 @@ class DurProductRepositoryImpl @Inject constructor( durProductCacheMap[itemSeq]?.keys?.filter { it !in durTypes } ?: durTypes } val map = mutableMapOf>>() - durProductDataSource.getDurList(itemSeq, filteredDurTypes).last().forEach { (durType, response) -> - response.onSuccess { - cache(itemSeq, durType, it) - durType to Result.success(DurItemWrapperFactory.createForDurProduct(durType, it).convert()) - }.onFailure { - durType to Result.failure>(it) + durProductDataSource.getDurList(itemSeq, filteredDurTypes).collect { resultMap -> + resultMap.forEach { (durType, response) -> + response.onSuccess { + cache(itemSeq, durType, it) + map[durType] = Result.success(DurItemWrapperFactory.createForDurProduct(durType, it).convert()) + }.onFailure { + map[durType] = Result.failure(it) + } } - } - send(map) + send(map) + } } private suspend fun cache(key: String, durType: DurType, response: DataGoKrResponse<*>) { diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItemWrapperFactory.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItemWrapperFactory.kt index 08b39e8fe..161ee65ca 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItemWrapperFactory.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/DurItemWrapperFactory.kt @@ -9,19 +9,19 @@ import com.android.mediproject.core.model.dur.durproduct.dosing.DurProductDosing import com.android.mediproject.core.model.dur.durproduct.dosing.DurProductDosingCautionWrapper import com.android.mediproject.core.model.dur.durproduct.efficacygroupduplication.DurProductEfficacyGroupDuplicationResponse import com.android.mediproject.core.model.dur.durproduct.efficacygroupduplication.DurProductEfficacyGroupDuplicationWrapper -import com.android.mediproject.core.model.dur.durproduct.extendedreleasetablet.DurProductExReleaseTabletSplitAttentionResponse import com.android.mediproject.core.model.dur.durproduct.extendedreleasetablet.DurProductExReleaseTableSplitAttentionWrapper +import com.android.mediproject.core.model.dur.durproduct.extendedreleasetablet.DurProductExReleaseTabletSplitAttentionResponse import com.android.mediproject.core.model.dur.durproduct.pregnancy.DurProductPregnantWomanTabooResponse import com.android.mediproject.core.model.dur.durproduct.pregnancy.DurProductPregnantWomanTabooWrapper import com.android.mediproject.core.model.dur.durproduct.senior.DurProductSeniorCautionResponse import com.android.mediproject.core.model.dur.durproduct.senior.DurProductSeniorCautionWrapper import com.android.mediproject.core.model.dur.durproduct.specialtyagegroup.DurProductSpecialtyAgeGroupTabooResponse -import com.android.mediproject.core.model.dur.durproduct.specialtyagegroup.DurProductSpecialtyWrapper +import com.android.mediproject.core.model.dur.durproduct.specialtyagegroup.DurProductSpecialtyAgeGroupTabooWrapper class DurItemWrapperFactory { companion object { inline fun > createForDurProduct(durType: DurType, response: T): DurItemWrapper = when (durType) { - DurType.SPECIALTY_AGE_GROUP_TABOO -> DurProductSpecialtyWrapper(response as DurProductSpecialtyAgeGroupTabooResponse) + DurType.SPECIALTY_AGE_GROUP_TABOO -> DurProductSpecialtyAgeGroupTabooWrapper(response as DurProductSpecialtyAgeGroupTabooResponse) DurType.SENIOR_CAUTION -> DurProductSeniorCautionWrapper(response as DurProductSeniorCautionResponse) DurType.DOSING_CAUTION -> DurProductDosingCautionWrapper(response as DurProductDosingCautionResponse) DurType.EFFICACY_GROUP_DUPLICATION -> DurProductEfficacyGroupDuplicationWrapper(response as DurProductEfficacyGroupDuplicationResponse) diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/DurType.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/DurType.kt index bdb9bce42..aefa7b237 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/dur/DurType.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/DurType.kt @@ -2,5 +2,13 @@ package com.android.mediproject.core.model.dur enum class DurType(val type: String) { CAPACITY_ATTENTION("용량주의"), DOSING_CAUTION("투여기간주의"), EFFICACY_GROUP_DUPLICATION("효능군중복"), EX_RELEASE_TABLET_SPLIT_ATTENTION("서방정분할주의"), - COMBINATION_TABOO("병용금기"), SPECIALTY_AGE_GROUP_TABOO("특정연령대금기"), SENIOR_CAUTION("노인주의"), PREGNANT_WOMAN_TABOO("임부금기") + COMBINATION_TABOO("병용금기"), SPECIALTY_AGE_GROUP_TABOO("특정연령대금기"), SENIOR_CAUTION("노인주의"), PREGNANT_WOMAN_TABOO("임부금기"); + + companion object { + fun typeOf(type: String): DurType { + return DurType.values().find { it.type == type } ?: throw IllegalArgumentException("Unknown DurType: $type") + } + + const val excludeType = "첨가제주의" + } } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/combination/DurIngrCombinationTaboo.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/combination/DurIngrCombinationTaboo.kt index 62b2c41e6..f3fd4b20d 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/combination/DurIngrCombinationTaboo.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/duringr/combination/DurIngrCombinationTaboo.kt @@ -1,5 +1,6 @@ package com.android.mediproject.core.model.dur.duringr.combination +import android.text.Spanned import com.android.mediproject.core.model.dur.DurItemWrapper import com.android.mediproject.core.model.dur.DurType import com.android.mediproject.core.model.dur.duringr.ui.DurIngrItem @@ -13,7 +14,10 @@ data class DurIngrCombinationTaboo( val mixtureIngrEngName: String, val remark: String, override val prohibitContent: String = "", -) : DurIngrItem(DurType.COMBINATION_TABOO) +) : DurIngrItem(DurType.COMBINATION_TABOO) { + override val content: Spanned + get() = TODO("Not yet implemented") +} class DurIngrCombinationTabooWrapper( override val response: DurIngrCombinationTabooResponse, diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/capacity/DurProductCapacityAttention.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/capacity/DurProductCapacityAttention.kt index 84a866ce0..0f48dacea 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/capacity/DurProductCapacityAttention.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/capacity/DurProductCapacityAttention.kt @@ -1,8 +1,16 @@ package com.android.mediproject.core.model.dur.durproduct.capacity +import android.graphics.Typeface +import android.text.Spannable +import android.text.SpannableStringBuilder +import android.text.Spanned +import android.text.style.RelativeSizeSpan +import android.text.style.StyleSpan +import androidx.core.text.toSpanned import com.android.mediproject.core.model.dur.DurItemWrapper import com.android.mediproject.core.model.dur.DurType import com.android.mediproject.core.model.dur.durproduct.ui.DurProductItem +import java.lang.ref.WeakReference /** * 용량주의 @@ -13,7 +21,19 @@ import com.android.mediproject.core.model.dur.durproduct.ui.DurProductItem data class DurProductCapacityAttention( val itemName: String, override val prohibitContent: String, -) : DurProductItem(DurType.CAPACITY_ATTENTION) +) : DurProductItem(DurType.CAPACITY_ATTENTION) { + override val content: Spanned + get() = WeakReference(SpannableStringBuilder()).get()!!.let { builder -> + builder.append(itemName) + builder.setSpan(StyleSpan(Typeface.BOLD), 0, itemName.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + builder.setSpan(RelativeSizeSpan(1.2f), 0, itemName.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + + builder.append("\n") + builder.append(prohibitContent) + + builder.toSpanned() + } +} fun DurProductCapacityAttentionResponse.Item.toDurProductCapacityAttention() = DurProductCapacityAttention( diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/combination/DurProductCombinationTaboo.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/combination/DurProductCombinationTaboo.kt index 5106f6989..57e645cff 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/combination/DurProductCombinationTaboo.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/combination/DurProductCombinationTaboo.kt @@ -1,8 +1,16 @@ package com.android.mediproject.core.model.dur.durproduct.combination +import android.graphics.Typeface +import android.text.Spannable +import android.text.SpannableStringBuilder +import android.text.Spanned +import android.text.style.RelativeSizeSpan +import android.text.style.StyleSpan +import androidx.core.text.toSpanned import com.android.mediproject.core.model.dur.DurItemWrapper import com.android.mediproject.core.model.dur.DurType import com.android.mediproject.core.model.dur.durproduct.ui.DurProductItem +import java.lang.ref.WeakReference data class DurProductCombinationTaboo( val itemName: String, @@ -14,7 +22,18 @@ data class DurProductCombinationTaboo( val mixtureIngrEngName: String, val remark: String, override val prohibitContent: String, -) : DurProductItem(DurType.COMBINATION_TABOO) +) : DurProductItem(DurType.COMBINATION_TABOO) { + override val content: Spanned = WeakReference(SpannableStringBuilder()).get()!!.let { builder -> + builder.append(itemName) + builder.setSpan(StyleSpan(Typeface.BOLD), 0, itemName.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + builder.setSpan(RelativeSizeSpan(1.2f), 0, itemName.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + + builder.append("\n") + builder.append(prohibitContent) + + builder.toSpanned() + } +} class DurProductCombinationTabooWrapper( override val response: DurProductCombinationTabooResponse, diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/dosing/DurProductDosingCaution.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/dosing/DurProductDosingCaution.kt index 207f7137b..b2af95fbb 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/dosing/DurProductDosingCaution.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/dosing/DurProductDosingCaution.kt @@ -1,8 +1,16 @@ package com.android.mediproject.core.model.dur.durproduct.dosing +import android.graphics.Typeface +import android.text.Spannable +import android.text.SpannableStringBuilder +import android.text.Spanned +import android.text.style.RelativeSizeSpan +import android.text.style.StyleSpan +import androidx.core.text.toSpanned import com.android.mediproject.core.model.dur.DurItemWrapper import com.android.mediproject.core.model.dur.DurType import com.android.mediproject.core.model.dur.durproduct.ui.DurProductItem +import java.lang.ref.WeakReference /** * 투여기간 주의 @@ -13,7 +21,19 @@ import com.android.mediproject.core.model.dur.durproduct.ui.DurProductItem data class DurProductDosingCaution( val itemName: String, override val prohibitContent: String, -) : DurProductItem(DurType.DOSING_CAUTION) +) : DurProductItem(DurType.DOSING_CAUTION) { + override val content: Spanned + get() = WeakReference(SpannableStringBuilder()).get()!!.let { builder -> + builder.append(itemName) + builder.setSpan(StyleSpan(Typeface.BOLD), 0, itemName.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + builder.setSpan(RelativeSizeSpan(1.2f), 0, itemName.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + + builder.append("\n") + builder.append(prohibitContent) + + builder.toSpanned() + } +} class DurProductDosingCautionWrapper( diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplication.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplication.kt index 6d7121a99..f9e987c95 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplication.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/efficacygroupduplication/DurProductEfficacyGroupDuplication.kt @@ -1,8 +1,16 @@ package com.android.mediproject.core.model.dur.durproduct.efficacygroupduplication +import android.graphics.Typeface +import android.text.Spannable +import android.text.SpannableStringBuilder +import android.text.Spanned +import android.text.style.RelativeSizeSpan +import android.text.style.StyleSpan +import androidx.core.text.toSpanned import com.android.mediproject.core.model.dur.DurItemWrapper import com.android.mediproject.core.model.dur.DurType import com.android.mediproject.core.model.dur.durproduct.ui.DurProductItem +import java.lang.ref.WeakReference data class DurProductEfficacyGroupDuplication( val itemName: String, @@ -11,7 +19,19 @@ data class DurProductEfficacyGroupDuplication( val ingrKorName: String, val ingrEngName: String, override val prohibitContent: String, -) : DurProductItem(DurType.EFFICACY_GROUP_DUPLICATION) +) : DurProductItem(DurType.EFFICACY_GROUP_DUPLICATION) { + override val content: Spanned + get() = WeakReference(SpannableStringBuilder()).get()!!.let { builder -> + builder.append(ingrEngName) + builder.setSpan(StyleSpan(Typeface.BOLD), 0, itemName.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + builder.setSpan(RelativeSizeSpan(1.2f), 0, itemName.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + + builder.append("\n") + builder.append(itemName) + + builder.toSpanned() + } +} class DurProductEfficacyGroupDuplicationWrapper( override val response: DurProductEfficacyGroupDuplicationResponse, diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/DurProductExReleaseTabletSplitAttention.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/DurProductExReleaseTabletSplitAttention.kt index 0d9a08e86..7074854c8 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/DurProductExReleaseTabletSplitAttention.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/extendedreleasetablet/DurProductExReleaseTabletSplitAttention.kt @@ -1,10 +1,16 @@ package com.android.mediproject.core.model.dur.durproduct.extendedreleasetablet +import android.graphics.Typeface +import android.text.Spannable +import android.text.SpannableStringBuilder import android.text.Spanned +import android.text.style.RelativeSizeSpan +import android.text.style.StyleSpan +import androidx.core.text.toSpanned import com.android.mediproject.core.model.dur.DurItemWrapper import com.android.mediproject.core.model.dur.DurType import com.android.mediproject.core.model.dur.durproduct.ui.DurProductItem -import com.android.mediproject.core.model.dur.toHtml +import java.lang.ref.WeakReference /** * 서방정 분할 주의 @@ -17,7 +23,17 @@ data class DurProductExReleaseTabletSplitAttention( override val prohibitContent: String, ) : DurProductItem(DurType.EX_RELEASE_TABLET_SPLIT_ATTENTION) { - override val content: Spanned = "$itemName\n$prohibitContent".toHtml() + override val content: Spanned + get() = WeakReference(SpannableStringBuilder()).get()!!.let { builder -> + builder.append(itemName) + builder.setSpan(StyleSpan(Typeface.BOLD), 0, itemName.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + builder.setSpan(RelativeSizeSpan(1.2f), 0, itemName.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + + builder.append("\n") + builder.append(prohibitContent) + + builder.toSpanned() + } } class DurProductExReleaseTableSplitAttentionWrapper( diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/pregnancy/DurProductPregnantWomanTaboo.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/pregnancy/DurProductPregnantWomanTaboo.kt index 0bbfb1c87..2d6cc3b33 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/pregnancy/DurProductPregnantWomanTaboo.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/pregnancy/DurProductPregnantWomanTaboo.kt @@ -1,8 +1,16 @@ package com.android.mediproject.core.model.dur.durproduct.pregnancy +import android.graphics.Typeface +import android.text.Spannable +import android.text.SpannableStringBuilder +import android.text.Spanned +import android.text.style.RelativeSizeSpan +import android.text.style.StyleSpan +import androidx.core.text.toSpanned import com.android.mediproject.core.model.dur.DurItemWrapper import com.android.mediproject.core.model.dur.DurType import com.android.mediproject.core.model.dur.durproduct.ui.DurProductItem +import java.lang.ref.WeakReference /** * 임부 금기 @@ -17,7 +25,22 @@ data class DurProductPregnantWomanTaboo( val ingrKorName: String, val ingrEngName: String, override val prohibitContent: String, -) : DurProductItem(DurType.PREGNANT_WOMAN_TABOO) +) : DurProductItem(DurType.PREGNANT_WOMAN_TABOO) { + override val content: Spanned + get() = WeakReference(SpannableStringBuilder()).get()!!.let { builder -> + builder.append(itemName) + builder.setSpan(StyleSpan(Typeface.BOLD), 0, itemName.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + builder.setSpan(RelativeSizeSpan(1.2f), 0, itemName.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + + builder.append(ingrEngName) + builder.setSpan(StyleSpan(Typeface.BOLD), builder.length - ingrEngName.length, builder.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + + builder.append("\n") + builder.append(prohibitContent) + + builder.toSpanned() + } +} class DurProductPregnantWomanTabooWrapper( override val response: DurProductPregnantWomanTabooResponse, diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/productlist/DurProductListResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/productlist/DurProductListResponse.kt index 5c7a70fc6..2951d07d6 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/productlist/DurProductListResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/productlist/DurProductListResponse.kt @@ -2,6 +2,7 @@ package com.android.mediproject.core.model.dur.durproduct.productlist import com.android.mediproject.core.model.DataGoKrResponse +import com.android.mediproject.core.model.dur.DurType import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -18,22 +19,14 @@ class DurProductListResponse : DataGoKrResponse() { * @param chart 성상 * @param classNo 분류번호 * @param ediCode 보험코드 - * @param eeDocId 제조방법 * @param entpName 업체명 - * @param etcOtcCode 전문일반 구분코드 - * @param insertFile 첨부파일 * @param itemName 제품명 * @param itemPermitDate 품목허가일자 * @param itemSeq 품목기준코드 * @param materialName 원료성분 - * @param nbDocId 주의사항 * @param packUnit 포장단위 - * @param reexamDate 재심사기간 - * @param reexamTarget 재심사대상 * @param storageMethod 저장방법 - * @param typeCode 유형코드 * @param typeName DUR 유형 - * @param validTerm 유효기간 */ @Serializable data class Item( @@ -45,24 +38,15 @@ class DurProductListResponse : DataGoKrResponse() { @SerialName("CHART") val chart: String = "", // 미황색의 원형 정제 @SerialName("CLASS_NO") val classNo: String = "", // [141]항히스타민제 @SerialName("EDI_CODE") val ediCode: String = "", // 642102570 - @SerialName("EE_DOC_ID") val eeDocId: String = "", // HTTPS://NEDRUG.MFDS.GO.KR/PBP/CMN/PDFVIEWER/196000011/EE @SerialName("ENTP_NAME") val entpName: String = "", // (주)유한양행 - @SerialName("ETC_OTC_CODE") val etcOtcCode: String = "", // 일반의약품 - @SerialName("INSERT_FILE") val insertFile: String = "", // HTTP://WWW.HEALTH.KR/IMAGES/INSERT_PDF/In_A11A0450A0085_00.pdf @SerialName("ITEM_NAME") val itemName: String = "", // 페니라민정(클로르페니라민말레산염) @SerialName("ITEM_PERMIT_DATE") val itemPermitDate: String = "", // 1960October10th @SerialName("ITEM_SEQ") val itemSeq: String = "", // 196000011 @SerialName("MATERIAL_NAME") val materialName: String = "", // 클로르페니라민말레산염,,2.0,밀리그램,KP, - @SerialName("NB_DOC_ID") val nbDocId: String = "", // HTTPS://NEDRUG.MFDS.GO.KR/PBP/CMN/PDFVIEWER/196000011/NB @SerialName("PACK_UNIT") val packUnit: String = "", // 1000정/병 - @SerialName("REEXAM_DATE") val reexamDate: String = "", // null - @SerialName("REEXAM_TARGET") val reexamTarget: String = "", // null @SerialName("STORAGE_METHOD") val storageMethod: String = "", // 실온, 건소, 밀폐용기, - @SerialName("TYPE_CODE") val typeCode: String = "", // D,F,I @SerialName("TYPE_NAME ") val typeName: String = "", // 용량주의,노인주의,첨가제주의 - @SerialName("VALID_TERM") val validTerm: String = "", // 제조일로부터 36 개월 ) : LeafItem { - val typeNames = typeName.split(",") - val typeCodes = typeCode.split(",") + val typeNames = typeName.split(",").filterNot { it == DurType.excludeType } } } diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/senior/DurProductSeniorCaution.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/senior/DurProductSeniorCaution.kt index b1d72a6c5..c39e6ee47 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/senior/DurProductSeniorCaution.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/senior/DurProductSeniorCaution.kt @@ -1,8 +1,16 @@ package com.android.mediproject.core.model.dur.durproduct.senior +import android.graphics.Typeface +import android.text.Spannable +import android.text.SpannableStringBuilder +import android.text.Spanned +import android.text.style.RelativeSizeSpan +import android.text.style.StyleSpan +import androidx.core.text.toSpanned import com.android.mediproject.core.model.dur.DurItemWrapper import com.android.mediproject.core.model.dur.DurType import com.android.mediproject.core.model.dur.durproduct.ui.DurProductItem +import java.lang.ref.WeakReference /** * 노인 주의 @@ -13,7 +21,19 @@ import com.android.mediproject.core.model.dur.durproduct.ui.DurProductItem data class DurProductSeniorCaution( val itemName: String, override val prohibitContent: String, -) : DurProductItem(DurType.SENIOR_CAUTION) +) : DurProductItem(DurType.SENIOR_CAUTION) { + override val content: Spanned + get() = WeakReference(SpannableStringBuilder()).get()!!.let { builder -> + builder.append(itemName) + builder.setSpan(StyleSpan(Typeface.BOLD), 0, itemName.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + builder.setSpan(RelativeSizeSpan(1.2f), 0, itemName.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + + builder.append("\n") + builder.append(prohibitContent) + + builder.toSpanned() + } +} class DurProductSeniorCautionWrapper( override val response: DurProductSeniorCautionResponse, diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTaboo.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTaboo.kt new file mode 100644 index 000000000..35e026472 --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/specialtyagegroup/DurProductSpecialtyAgeGroupTaboo.kt @@ -0,0 +1,48 @@ +package com.android.mediproject.core.model.dur.durproduct.specialtyagegroup + +import android.graphics.Typeface +import android.text.Spannable +import android.text.SpannableStringBuilder +import android.text.Spanned +import android.text.style.RelativeSizeSpan +import android.text.style.StyleSpan +import androidx.core.text.toSpanned +import com.android.mediproject.core.model.dur.DurItemWrapper +import com.android.mediproject.core.model.dur.DurType +import com.android.mediproject.core.model.dur.durproduct.ui.DurProductItem +import java.lang.ref.WeakReference + +/** + * 특정연령대 금기 + * + * @param itemName 품목명 + * @param prohibitContent 연령금기내용 + */ +data class DurProductSpecialtyAgeGroupTaboo( + val itemName: String, + override val prohibitContent: String, +) : DurProductItem(DurType.SPECIALTY_AGE_GROUP_TABOO) { + override val content: Spanned + get() = WeakReference(SpannableStringBuilder()).get()!!.let { builder -> + builder.append(itemName) + builder.setSpan(StyleSpan(Typeface.BOLD), 0, itemName.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + builder.setSpan(RelativeSizeSpan(1.2f), 0, itemName.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + + builder.append("\n") + builder.append(prohibitContent) + + builder.toSpanned() + } +} + +class DurProductSpecialtyAgeGroupTabooWrapper( + override val response: DurProductSpecialtyAgeGroupTabooResponse, +) : DurItemWrapper(response) { + override fun convert() = response.body.items.map { + DurProductSpecialtyAgeGroupTaboo( + itemName = it.itemName, + prohibitContent = it.prohibitContent, + ) + } + +} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/specialtyagegroup/DurSpecialtyAgeGroup.kt b/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/specialtyagegroup/DurSpecialtyAgeGroup.kt deleted file mode 100644 index dcf9e359c..000000000 --- a/core/model/src/main/java/com/android/mediproject/core/model/dur/durproduct/specialtyagegroup/DurSpecialtyAgeGroup.kt +++ /dev/null @@ -1,28 +0,0 @@ -package com.android.mediproject.core.model.dur.durproduct.specialtyagegroup - -import com.android.mediproject.core.model.dur.DurItemWrapper -import com.android.mediproject.core.model.dur.DurType -import com.android.mediproject.core.model.dur.durproduct.ui.DurProductItem - -/** - * 특정연령대 금기 - * - * @param itemName 품목명 - * @param prohibitContent 연령금기내용 - */ -data class DurSpecialtyAgeGroup( - val itemName: String, - override val prohibitContent: String, -) : DurProductItem(DurType.SPECIALTY_AGE_GROUP_TABOO) - -class DurProductSpecialtyWrapper( - override val response: DurProductSpecialtyAgeGroupTabooResponse, -) : DurItemWrapper(response) { - override fun convert() = response.body.items.map { - DurSpecialtyAgeGroup( - itemName = it.itemName, - prohibitContent = it.prohibitContent, - ) - } - -} diff --git a/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetail.kt b/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetail.kt index fcc154d31..a1f8186a0 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetail.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetail.kt @@ -19,7 +19,6 @@ import java.time.LocalDate * @param docText ? * @param ediCode EDI코드 * @param eeDocData 의약품 효능효과 - * @param eeDocId 의약품 효능효과 문서의 식별자(ID)입니다. * @param entpEnglishName 제조사의 영문 이름입니다. * @param entpName 제조사의 이름입니다. * @param entpNumber 제조사의 번호입니다. @@ -65,7 +64,6 @@ data class MedicineDetail( val docText: String, val ediCode: String, val eeDocData: XMLParsedResult, - val eeDocId: String, val entpEnglishName: String, val entpName: String, val entpNumber: String, @@ -112,7 +110,6 @@ fun MedicineDetailInfoResponse.Item.toMedicineDetail(medicineIdInServer: Long = docText = docText, ediCode = ediCode, eeDocData = if (eeDocData.isNotEmpty()) eeDocData.parseXmlString() else XMLParsedResult("", emptyList()), - eeDocId = eeDocId, entpEnglishName = entpEnglishName, entpName = entpName, entpNumber = entpNumber, diff --git a/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetailInfoResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetailInfoResponse.kt index 2b16446b0..1b8a4f1c2 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetailInfoResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/medicine/medicinedetailinfo/MedicineDetailInfoResponse.kt @@ -25,7 +25,6 @@ class MedicineDetailInfoResponse : DataGoKrResponse Response.onResponse(): Result { } } -private val json = Json { coerceInputValues = true } +private val json = Json { + coerceInputValues = true + ignoreUnknownKeys = true +} private inline fun String.parse(): Result = try { Result.success(json.decodeFromString(this)) diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSource.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSource.kt index 7dc1f4066..163498bd3 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSource.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSource.kt @@ -15,7 +15,7 @@ import kotlinx.coroutines.flow.Flow interface DurProductDataSource { - fun getDurList(itemSeq: String, durTypes: List): Flow>>> + fun getDurList(itemSeq: String, durTypes: List): Flow>>> suspend fun getDurProductList( itemName: String?, diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt index 55927cd69..efc7d8e41 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/dur/DurProductDataSourceImpl.kt @@ -17,42 +17,38 @@ import kotlinx.coroutines.async import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow import javax.inject.Inject -import kotlin.reflect.full.callSuspendBy -import kotlin.reflect.full.findParameterByName class DurProductDataSourceImpl @Inject constructor( private val durProductInfoNetworkApi: DurProductInfoNetworkApi, ) : DurProductDataSource { - private val methods = mapOf( - DurType.CAPACITY_ATTENTION to ::getCapacityAttentionInfo, - DurType.COMBINATION_TABOO to ::getCombinationTabooInfo, - DurType.DOSING_CAUTION to ::getDosingCautionInfo, - DurType.EX_RELEASE_TABLET_SPLIT_ATTENTION to ::getExReleaseTableSplitAttentionInfo, - DurType.EFFICACY_GROUP_DUPLICATION to ::getEfficacyGroupDuplicationInfo, - DurType.PREGNANT_WOMAN_TABOO to ::getPregnantWomanTabooInfo, - DurType.SENIOR_CAUTION to ::getSeniorCaution, - DurType.SPECIALTY_AGE_GROUP_TABOO to ::getSpecialtyAgeGroupTabooInfo, - ) - - private val itemSeqParameter = ::getDurList.findParameterByName("itemSeq")!! - - override fun getDurList(itemSeq: String, durTypes: List): Flow>>> = channelFlow { - val args = mapOf(itemSeqParameter to itemSeq) - val map = durTypes.map { type -> - type to async { - methods.getValue(type).callSuspendBy(args) - } - }.associate { - it.first to it.second.await() - } - + override fun getDurList(itemSeq: String, durTypes: List): Flow>>> = channelFlow { + val map: Map>> = durTypes.map { type -> + type to async { call(type, itemSeq) } + }.associate { it.first to it.second.await() } send(map) } + + private suspend inline fun call(durType: DurType, itemSeq: String): Result> = when (durType) { + DurType.EX_RELEASE_TABLET_SPLIT_ATTENTION -> getExReleaseTableSplitAttentionInfo( + itemName = null, entpName = null, + typeName = null, itemSeq = itemSeq, + ) + + DurType.EFFICACY_GROUP_DUPLICATION -> getEfficacyGroupDuplicationInfo(itemName = null, ingrCode = null, typeName = null, itemSeq = itemSeq) + DurType.DOSING_CAUTION -> getDosingCautionInfo(itemName = null, ingrCode = null, typeName = null, itemSeq = itemSeq) + DurType.CAPACITY_ATTENTION -> getCapacityAttentionInfo(itemName = null, ingrCode = null, typeName = null, itemSeq = itemSeq) + DurType.PREGNANT_WOMAN_TABOO -> getPregnantWomanTabooInfo(itemName = null, ingrCode = null, typeName = null, itemSeq = itemSeq) + DurType.SPECIALTY_AGE_GROUP_TABOO -> getSpecialtyAgeGroupTabooInfo(itemName = null, ingrCode = null, typeName = null, itemSeq = itemSeq) + DurType.COMBINATION_TABOO -> getCombinationTabooInfo(itemName = null, ingrCode = null, typeName = null, itemSeq = itemSeq) + DurType.SENIOR_CAUTION -> getSeniorCaution(itemName = null, ingrCode = null, itemSeq = itemSeq) + } + override suspend fun getDurProductList(itemName: String?, itemSeq: String?): Result = durProductInfoNetworkApi.getDurProductList(itemName = itemName, itemSeq = itemSeq).onDataGokrResponse() + override suspend fun getSeniorCaution(itemName: String?, ingrCode: String?, itemSeq: String?): Result = durProductInfoNetworkApi.getSeniorCaution(itemName = itemName, ingrCode = ingrCode, itemSeq = itemSeq).onDataGokrResponse() diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/DataGoKrNetwork.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/DataGoKrNetwork.kt index 089fc41e6..95b809fbd 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/module/DataGoKrNetwork.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/DataGoKrNetwork.kt @@ -38,13 +38,17 @@ private const val DATA_GO_KR_BASEURL = "https://apis.data.go.kr/1471000/" @InstallIn(SingletonComponent::class) @Module object DataGoKrNetwork { + private val json = Json { + ignoreUnknownKeys = true + coerceInputValues = true + } // Retrofit2 인스턴스 --------------------------------------------------------------------------------------------------- @Provides @Singleton @Named("dataGoKrNetworkApiWithJsonResponse") fun providesDataGoKrNetworkApiWithJson(okHttpClient: OkHttpClient): DataGoKrNetworkApi = - Retrofit.Builder().client(okHttpClient).addConverterFactory(Json.asConverterFactory("application/json".toMediaType())) + Retrofit.Builder().client(okHttpClient).addConverterFactory(json.asConverterFactory("application/json".toMediaType())) .baseUrl(DATA_GO_KR_BASEURL).build().create(DataGoKrNetworkApi::class.java) @Provides diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/NetworkModule.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/NetworkModule.kt index 0a03669a9..669bd3ba5 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/module/NetworkModule.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/NetworkModule.kt @@ -130,7 +130,7 @@ object NetworkModule { addInterceptor( HttpLoggingInterceptor().apply { if (BuildConfig.DEBUG) { - level = HttpLoggingInterceptor.Level.BODY + level = HttpLoggingInterceptor.Level.BASIC } }, ) diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/ServerNetwork.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/ServerNetwork.kt index cb4536f5e..50085997c 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/module/ServerNetwork.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/ServerNetwork.kt @@ -66,12 +66,18 @@ import javax.inject.Singleton @Module object ServerNetwork { + private val json = Json { + ignoreUnknownKeys = true + coerceInputValues = true + } + + @Provides @Named("awsNetworkApiWithoutTokens") @Singleton fun providesWithoutTokensAwsNetworkApi( @Named("okHttpClientWithoutAny") okHttpClient: OkHttpClient, - ): AwsNetworkApi = Retrofit.Builder().client(okHttpClient).addConverterFactory(Json.asConverterFactory("application/json".toMediaType())) + ): AwsNetworkApi = Retrofit.Builder().client(okHttpClient).addConverterFactory(json.asConverterFactory("application/json".toMediaType())) .baseUrl(BuildConfig.AWS_BASE_URL).build().create(AwsNetworkApi::class.java) @@ -86,15 +92,18 @@ object ServerNetwork { @Singleton fun providesAwsNetworkApi( @Named("okHttpClientWithAccessTokens") okHttpClient: OkHttpClient, - ): AwsNetworkApi = Retrofit.Builder().client(okHttpClient).addConverterFactory(Json.asConverterFactory("application/json".toMediaType())) + ): AwsNetworkApi = Retrofit.Builder().client(okHttpClient).addConverterFactory(json.asConverterFactory("application/json".toMediaType())) .baseUrl(BuildConfig.AWS_BASE_URL).build().create(AwsNetworkApi::class.java) @Provides @Named("awsNetworkApiWithRefreshTokens") fun providesReissueTokenAwsNetworkApi( @Named("okHttpClientWithReissueTokens") okHttpClient: OkHttpClient, - ): AwsNetworkApi = Retrofit.Builder().client(okHttpClient).addConverterFactory(Json.asConverterFactory("application/json".toMediaType())) - .baseUrl(BuildConfig.AWS_BASE_URL).build().create(AwsNetworkApi::class.java) + ): AwsNetworkApi = Retrofit.Builder().client(okHttpClient).addConverterFactory( + json.asConverterFactory( + "application/json".toMediaType(), + ), + ).baseUrl(BuildConfig.AWS_BASE_URL).build().create(AwsNetworkApi::class.java) @Provides @Singleton diff --git a/core/network/src/test/java/com/android/mediproject/core/network/DurDataSourceTest.kt b/core/network/src/test/java/com/android/mediproject/core/network/DurDataSourceTest.kt new file mode 100644 index 000000000..0437df7b2 --- /dev/null +++ b/core/network/src/test/java/com/android/mediproject/core/network/DurDataSourceTest.kt @@ -0,0 +1,54 @@ +package com.android.mediproject.core.network + +import com.android.mediproject.core.model.dur.DurItemWrapperFactory +import com.android.mediproject.core.model.dur.DurType +import com.android.mediproject.core.model.dur.durproduct.capacity.DurProductCapacityAttentionResponse +import com.android.mediproject.core.network.datasource.dur.DurProductDataSourceImpl +import com.android.mediproject.core.network.module.datagokr.DurProductInfoNetworkApi +import kotlinx.coroutines.runBlocking +import org.junit.Before +import org.junit.Test +import org.mockito.Mock +import org.mockito.MockitoAnnotations +import kotlin.reflect.KClass +import kotlin.reflect.jvm.javaType + + +class DurDataSourceTest { + + @Mock private lateinit var durProductInfoNetworkApi: DurProductInfoNetworkApi + + + private lateinit var durProductDataSourceImpl: DurProductDataSourceImpl + + private val durProductCapacityAttentionResponse: DurProductCapacityAttentionResponse = DurProductCapacityAttentionResponse() + + @Before + fun setUp() { + MockitoAnnotations.openMocks(this) + durProductDataSourceImpl = DurProductDataSourceImpl(durProductInfoNetworkApi) + } + + @Test + fun testMethods() = runBlocking { + val ktype = DurProductDataSourceImpl::getCapacityAttentionInfo.returnType + val kclass = ktype.classifier as KClass + val type = ktype.javaType + val args = ktype.arguments + val kfunction = durProductDataSourceImpl::getCapacityAttentionInfo + } + + @Test + fun testGetDurList() = runBlocking { + // 임의의 itemSeq 정의 + val itemSeq = "testItemSeq" + + } + + @Test + fun convertDurProductToDurItem() = runBlocking { + val durType = DurType.CAPACITY_ATTENTION + val result = DurItemWrapperFactory.createForDurProduct(durType, durProductCapacityAttentionResponse).convert() + } + +} diff --git a/feature/medicine/build.gradle.kts b/feature/medicine/build.gradle.kts index 10684b151..155c07424 100644 --- a/feature/medicine/build.gradle.kts +++ b/feature/medicine/build.gradle.kts @@ -26,4 +26,7 @@ dependencies { implementation(libs.bundles.materials) implementation(libs.bundles.uiAndroidx) implementation(libs.androidx.asynclayoutinflater) + + testImplementation(libs.bundles.testLocal) + androidTestImplementation(libs.bundles.testAndroid) } diff --git a/feature/medicine/src/androidTest/java/com/android/mediproject/feature/medicine/ExampleUnitTest.kt b/feature/medicine/src/androidTest/java/com/android/mediproject/feature/medicine/ExampleUnitTest.kt new file mode 100644 index 000000000..be2b145c9 --- /dev/null +++ b/feature/medicine/src/androidTest/java/com/android/mediproject/feature/medicine/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package com.android.mediproject.feature.medicine + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/DurInfoFragment.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/DurInfoFragment.kt index 42dc5c9cf..7dbc63cba 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/DurInfoFragment.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/DurInfoFragment.kt @@ -46,20 +46,22 @@ class DurInfoFragment : BaseFragment(F viewLifecycleOwner.repeatOnStarted { fragmentViewModel.durList.collect { state -> state.isInitializing { - + }.isLoadingDurTypes { }.isLoadingDurList { }.isSuccess { + log("isSuccess") adapter.submitList(it) }.isError { - + log("isError") + adapter.submitList(emptyList()) } } } - adapter.submitList(null) + adapter.submitList(emptyList()) fragmentViewModel.getDur(medicineInfoViewModel.medicinePrimaryInfo.replayCache.last().itemSeq.toString()) } } diff --git a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/adapter/DurListAdapter.kt b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/adapter/DurListAdapter.kt index 8335ba962..8eb43fbbe 100644 --- a/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/adapter/DurListAdapter.kt +++ b/feature/medicine/src/main/java/com/android/mediproject/feature/medicine/precautions/dur/adapter/DurListAdapter.kt @@ -49,6 +49,8 @@ class DurListAdapter : MListAdapter(List } fun onBind(item: DurListItem) { + binding.model = item + binding.executePendingBindings() item.durItems?.onSuccess { contentsAdapter.submitList(it) }?.onFailure { } } } diff --git a/feature/medicine/src/main/res/layout/item_view_dur_list.xml b/feature/medicine/src/main/res/layout/item_view_dur_list.xml index 9b9c38705..0271941db 100644 --- a/feature/medicine/src/main/res/layout/item_view_dur_list.xml +++ b/feature/medicine/src/main/res/layout/item_view_dur_list.xml @@ -1,39 +1,54 @@ - - - - - - - + + + + + + + + + + android:paddingHorizontal="16dp" + android:paddingVertical="12dp"> + + + + + + + + - + diff --git a/feature/medicine/src/test/java/com/android/mediproject/feature/medicine/MListAdapterTest.kt b/feature/medicine/src/test/java/com/android/mediproject/feature/medicine/MListAdapterTest.kt new file mode 100644 index 000000000..98bfb0319 --- /dev/null +++ b/feature/medicine/src/test/java/com/android/mediproject/feature/medicine/MListAdapterTest.kt @@ -0,0 +1,21 @@ +package com.android.mediproject.feature.medicine + +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner + +@RunWith(RobolectricTestRunner::class) +class MListAdapter { + + + @Before + fun setUp() { + + } + + @Test + fun mlistAdapter() { + + } +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3eeb65ebd..634a053bd 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ # kotlin kotlin = "1.8.22" kotlinCompilerExtension = "1.4.8" -kotlinxCoroutines = "1.7.2" +kotlinxCoroutines = "1.7.3" kotlinxSerializationJson = "1.5.0" kotlinxDateTime = "0.4.0" ksp = "1.8.22-1.0.11" @@ -337,7 +337,7 @@ workManagers = ["androidx-work-ktx"] testLocal = ["junit", "mockito-core", "mockito-kotlin", "kotlinx-coroutines-testImplementation", "robolectric"] testAndroid = ["androidx-test-espresso-core", "androidx-test-runner", "androidx-test-rules", "androidx-test-core", "androidx-test-ext-truth", - "androidx-test-core-ktx", "androidx-test-ext-junit", "androidx-test-ext-junit-ktx", "kotlinx-coroutines-testImplementation"] + "androidx-test-core-ktx", "androidx-test-ext-junit", "androidx-test-ext-junit-ktx"] tflite = ["tensorflow-lite-lite", "tensorflow-lite-playServicesTfliteGpu", "tensorflow-lite-taskVisionPlayServices", "tensorflow-lite-playServicesTfliteJava", "tensorflow-lite-gpuDelegate", "tensorflow-lite-metadata",