---
# System prepended metadata

title: 智慧餐盤

---

:::spoiler API 清單
[TOC]
:::

# 智慧餐盤
## 常數定義
### 食物分類
 欄位 | 型態  | 說明
 ---|---|---
 category | string | WHOLE_GRAINS: 全榖雜糧, LEGUME_FISH_MEAT_EGG: 豆魚肉蛋, DAIRY: 乳製品, VEGETABLES: 蔬菜, FRUITS: 水果, OILS_AND_NUTS: 食用油與堅果, DRINK: 飲料, OTHER: 其他

### 食物類型-LEGUME_FISH_MEAT_EGG
 欄位 | 型態  | 說明
 ---|---|---
 type | string | LOW_FAT: 低脂, MEDIUM_FAT: 中脂, HIGH_FAT: 高脂, VERY_HIGH_FAT: 超高脂

### 食物類型-DAIRY
 欄位 | 型態  | 說明
 ---|---|---
 type | string | LOW_FAT: 低脂, WHOLE_FAT: 全脂, SKIM: 脫脂

### 食物類型-VEGETABLES
 欄位 | 型態  | 說明
 ---|---|---
 type | string | RAW: 生, COOKED: 熟

### 食物類型-OILS_AND_NUTS
 欄位 | 型態  | 說明
 ---|---|---
 type | string | OIL: 食用油, NUT: 堅果

### 食物類型-DRINK
 欄位 | 型態  | 說明
 ---|---|---
 type | string | WATER: 水, FULL_SUGAR: 全糖, LESS_SUGAR: 少糖, HALF_SUGAR: 半糖, QUARTER_SUGAR: 微糖, SUGAR_FREE: 無糖

### 用餐時段
 欄位 | 型態  | 說明
 ---|---|---
 timePeriod | int | ALL: -1(查詢用), 早上: 1, 中午: 2, 晚上: 3, 睡前: 4

### 用餐餐別
 欄位 | 型態  | 說明
 ---|---|---
 timePeriodType | int | ALL: -1(查詢用), <br/> **早上**<br/> 早餐: 10, 早午餐: 11, 運動前一小時: 12, 運動前兩小時: 13, 運動後一小時: 14, 運動後兩小時: 15, <br/> **中午**<br/> 午餐: 20, 下午茶: 21, 運動前一小時: 22, 運動前兩小時: 23, 運動後一小時: 24, 運動後兩小時: 25, <br/> **晚上**<br/> 晚餐: 30, 點心: 31, 運動前一小時: 32, 運動前兩小時: 33, 運動後一小時: 34, 運動後兩小時: 35 <br/>  **睡前**<br/> 40:宵夜, 運動前一小時: 42, 運動前兩小時: 43, 運動後一小時: 44, 運動後兩小時: 45

### 烹調方式
 欄位 | 型態  | 說明
 ---|---|---
 type | string | FAT_FREE: 無油, FRY: 非油炸, FRIED: 油炸

### 額外加糖
 欄位 | 型態  | 說明
 ---|---|---
 type | string | NONE: 無添加, WITH_SUGAR: 加糖

### 餐盤狀態
 欄位 | 型態  | 說明
 ---|---|---
 status | string | DRAFT: 草稿, PUBLISHED:  已發布

### 飲食記錄方式
 欄位 | 型態  | 說明
 ---|---|---
 diaryRecordType | string | DIET_PLAN: 我的餐盤, FOOD_DB: 食品資料庫

### 飲食分數查詢區間類別
 欄位 | 型態  | 說明
 ---|---|---
 scorePeriod | string | DAILY: 日, WEEKLY: 週, MONTHLY: 月


## API
### 取得六大營養素資訊[APP/WEB]

```url
GET /diet-plan/getIngredientsInfo
```

取得六大營養素的類別/分類/熱量

#### Request

#### Response
 欄位 | 型態 | 說明
 ---  | --- | ---
 category | string | 食物分類, 請參閱[食物分類](#食物分類)
 types | json array | 在食物分類下的所有類型食材
 cookedTypes | json array | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型
 addedSugars | json array | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項

##### Response-types
 欄位 | 型態 | 說明
 ---  | --- | ---
 id | string | 食材id
 description | string | 食材描述
 type | string | 食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG)
 simpleUnit | string | 簡易份量單位
 calorie | double | 每份量的熱量
 protein | double | 每份量的蛋白質重量(g)
 sugar | double | 每份量的糖重量(g)
 fat | double | 每份量的脂肪重量(g)
 protein_cal | double | 每份量的蛋白質熱量
 sugar_cal | double | 每份量的糖熱量
 fat_cal | double | 每份量的脂肪熱量
 simpleUnitTransferCoefficient | double | 簡易單位轉換成一般份量的轉換係數<BR>上方的重量和熱量都是基於一般分量. 要用簡易熱量轉換時要乘上轉換係數<BR>e.g.: 每份熱量: 50, 轉換係數: 2, 0.5份簡易份量熱量等於: 0.5 x 2 x 50

 ##### Response-cookedTypes/addedSugars
 欄位 | 型態 | 說明
 ---  | --- | ---
 id | string | 食材id
 description | string | 食材描述
 type | string | 食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG)
 calorie | double | 每份量的熱量
 protein | double | 每份量的蛋白質重量(g)
 sugar | double | 每份量的糖重量(g)
 fat | double | 每份量的脂肪重量(g)
 protein_cal | double | 每份量的蛋白質熱量
 sugar_cal | double | 每份量的糖熱量
 fat_cal | double | 每份量的脂肪熱量

```javascript
{
    "httpCode": 200,
    "result": {
        "data": [
            {
                "category": "LEGUME_FISH_MEAT_EGG",
                "types": [
                    {
                        "id": "5ac5e206-881d-4d0d-b6b7-6ef9c61713b4",
                        "description": "豆魚肉蛋(中脂)",
                        "type": "MEDIUM_FAT",
                        "simpleUnit": "掌心",
                        "simpleUnitTransferCoefficient": 2.0,
                        "protein": 7.0,
                        "fat": 5.0,
                        "calorie": 73.0,
                        "proteinCal": 28.0,
                        "fatCal": 20.0
                    }...
                ],
                "cookedTypes": [
                    {
                        "id": "01a74fad-3df8-429e-8507-2392969b5585",
                        "description": "烹調方式(無油)",
                        "type": "FAT_FREE",
                        "fat": 0.0,
                        "calorie": 0.0,
                        "fatCal": 0.0
                    },
                    ...
                ],
                "addedSugars": []
            },
        ]
    }
}
```

### 取得我的建議餐盤[APP]

```url
GET /diet-plan/getMySuggestPlan
```

取得我的建議餐盤

#### Request

#### Response-取得我的建議餐盤
 欄位 | 型態 | 說明
 ---  | --- | ---
 id | string | 餐盤id
 createTime | timestamp | 餐盤建立時間
 updateTime | timestamp | 餐盤更新時間
 creatorId | string | 餐盤建立者ID, 空值的話代表衛福部預設餐盤
 creatorName | string | 餐盤建立者姓名, 空值的話代表衛福部預設餐盤
 creatorRole | string | 餐盤建立者腳色, 空值的話代表衛福部預設餐盤
 tenantId | string | 餐盤建立者的租戶ID, 空值的話代表衛福部預設餐盤
 tenantName | string | 餐盤建立者的租戶名稱, 空值的話代表衛福部預設餐盤
 totalCalorie | double | 本餐盤的總熱量
 totalProteinCalorie | double | 本餐盤的蛋白質熱量
 totalSugarCalorie | double | 本餐盤的醣類熱量
 totalFatCalorie | double | 本餐盤的脂肪熱量
 timePeriods| json array | 餐盤時段array
 cookedTypes | json array | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型
 addedSugars | json array | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項

##### Response-timePeriods
 欄位 | 型態 | 說明
 ---  | --- | ---
 timePeriod | int | 用餐時段, 請參閱[用餐時段](#用餐時段)
 timePeriodTypes | json array | 用餐餐別

##### Response-timePeriodTypes
 欄位 | 型態 | 說明
 ---  | --- | ---
 timePeriodType | int | 用餐餐別, 請參閱[用餐餐別](#用餐餐別)
 totalCalorie | double | 本餐別的總熱量
 totalProteinCalorie | double | 本餐別的蛋白質熱量
 totalSugarCalorie | double | 本餐別的醣類熱量
 totalFatCalorie | double | 本餐別的脂肪熱量
 meals | json array | 建議餐點類型與用量
 foodCategorys| json array| 建議餐點的熱量和用量根據食物分類統計

##### Response-meals
 欄位 | 型態 | 說明
 ---  | --- | ---
 foodCategory | string | 食物分類, 請參閱[食物分類](#食物分類)
 foodType | string | 食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG)
 cookedType | string | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型
 addedSugar | string | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項
 quantity | double | 建議用量(份)
 simpleUnit | string | 簡易單位
 calorie | double | 本餐點的熱量
 proteinCalorie | double | 本餐點的蛋白質熱量
 sugarCalorie | double | 本餐點的醣類熱量
 fatCalorie | double | 本餐點的脂肪熱量
 simpleUnitTransferCoefficient | double | 簡易單位轉換成一般份量的轉換係數<BR/>上方的重量和熱量都是基於一般分量. 要用簡易熱量轉換時要乘上轉換係數<BR>e.g.: 每份熱量: 50, 轉換係數: 2, 0.5份簡易份量熱量等於: 0.5 x 2 x 50

##### Response-foodCategorys
 欄位 | 型態 | 說明
 ---  | --- | ---
 foodCategory | string | 食物分類, 請參閱[食物分類](#食物分類)
 quantity | double | 建議用量(份)
 simpleUnit | string | 簡易單位
 calorie | double | 本餐點的熱量
 proteinCalorie | double | 本餐點的蛋白質熱量
 sugarCalorie | double | 本餐點的醣類熱量
 fatCalorie | double | 本餐點的脂肪熱量
 simpleUnitTransferCoefficient | double | 簡易單位轉換成一般份量的轉換係數<BR/>上方的重量和熱量都是基於一般分量. 要用簡易熱量轉換時要乘上轉換係數<BR>e.g.: 每份熱量: 50, 轉換係數: 2, 0.5份簡易份量熱量等於: 0.5 x 2 x 50

```javascript
{
    "httpCode": 200,
    "result": {
        "data": {
            "id": "6298166e-6dc5-435e-b113-0975d48efdb9",
            "createTime": 1664122976237,
            "updateTime": 1664122976237,
            "creatorId": "7a17be34-13ae-4687-b971-1e5f586c8e3a",
            "creatorName": "Dr. X",
            "creatorRole": "腳科醫生",
            "tenantId": "858b7fbb-3ba0-4d49-9882-c893a1ef07dc",
            "tenantName": "緯緯醫學",
            "totalCalorie": 324.5,
            "totalProteinCalorie": 52.0,
            "totalSugarCalorie": 88.0,
            "totalFatCalorie": 94.5,
            "timePeriods": [
                {
                    "timePeriod": 1,
                    "timePeriodTypes": [
                        {
                            "timePeriodType": 10,
                            "totalCalorie": 324.5,
                            "totalProteinCalorie": 52.0,
                            "totalSugarCalorie": 88.0,
                            "totalFatCalorie": 94.5,
                            "meals": [
                                {
                                    "foodCategory": "LEGUME_FISH_MEAT_EGG",
                                    "foodType": "MEDIUM_FAT",
                                    "quantity": 0.5,
                                    "simpleUnit": "掌心",
                                    "simpleUnitTransferCoefficient": 2.0,
                                    "cookedType": "FRY",
                                    "calorie": 36.5,
                                    "proteinCalorie": 14.0,
                                    "sugarCalorie": 0.0,
                                    "fatCalorie": 22.5
                                },...
                            ],
                            "foodCategorys": [
                                {
                                    "calorie": 45.0,
                                    "proteinCal": 0.0,
                                    "sugarCal": 0.0,
                                    "fatCal": 45.0,
                                    "foodCategory": "OILS_AND_NUTS",
                                    "quantity": 1.0,
                                    "simpleUnit": "茶匙5ml",
                                    "simpleUnitTransferCoefficient": 0.333333
                            },
                        }
                    ]
                }
            ]
        }
    }
}
```

### 查詢用戶的餐盤清單[WEB]

```url
POST /diet-plan-mgmt/queryDietPlanList
```

取得用戶的所有建議餐盤

#### Request
##### query (查詢條件json)
 欄位 | 型態  | 必填 | 長度限制 | 預設 | 說明
 ---|---|---|---|---|---
 householdMemberId | string | |  | | 要查詢的用戶ID

##### pagination (分頁json)
 欄位 | 型態  | 必填 | 預設 | 說明
 ---|---|---|---|---
 current | int | | 1 | 當前頁數
 pageSize | int | | 10 | 每頁結果數量，-1 為顯示所有

##### sorter (排序json)
 欄位 | 型態  | 必填 | 預設 | 說明
 ---|---|---|---|---
 field | string | | createTime | 排序欄位,可排序欄位有 totalCalories, creatorName, status, updateTime
 order | string | | desc | 升序或降序

```javascript
{
   "query": {
       "householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5"
   }
}
```

#### Error
 httpCode | 錯誤碼 | 說明
 --- | --- | ---

#### Response
 欄位 | 型態 | 說明
 ---  | --- | ---
 id | string | 餐盤id
 createTime | timestamp | 餐盤建立時間
 updateTime | timestamp | 餐盤更新時間
 creatorId | string | 餐盤建立者ID, 空值的話代表衛福部預設餐盤
 creatorName | string | 餐盤建立者姓名, 空值的話代表衛福部預設餐盤
 tenantId | string | 餐盤建立者的租戶ID, 空值的話代表衛福部預設餐盤
 tenantName | string | 餐盤建立者的租戶名稱, 空值的話代表衛福部預設餐盤
 totalCalorie| double | 該餐盤的總建議熱量
 status | string | 餐盤狀態, 請參閱[餐盤狀態](#餐盤狀態)

```javascript
{
    "httpCode": 200,
    "result": {
        "data": [
            {
                "id": "6298166e-6dc5-435e-b113-0975d48efdb9",
                "createTime": 1664122976237,
                "updateTime": 1664122976237,
                "status": "PUBLISHED",
                "creatorId": "7a17be34-13ae-4687-b971-1e5f586c8e3a",
                "creatorName": "Dr. X",
                "tenantId": "858b7fbb-3ba0-4d49-9882-c893a1ef07dc",
                "tenantName": "緯緯醫學",
                "totalCalorie": 324.5
            },
            ...
        ]
    }
}
```

### 取得營養診斷資訊[WEB]

```url
GET /diet-plan-mgmt/getNutritionalDiagnosisInfo
```

取得營養診斷資訊

#### Request

#### Error
 httpCode | 錯誤碼 | 說明
 --- | --- | ---

#### Response
 欄位 | 型態 | 說明
 ---  | --- | ---
 problemCategoryId | string | 問題分類key
 problemCategoryI18n | string | 問題分類i18n
 problemCategoryDescription | string | 問題分類描述
 problems | json array | 該問題分類下的所有問題

##### Response-problems
 欄位 | 型態 | 說明
 ---  | --- | ---
 problemId | string | 問題key
 problemI18n | string | 問題i18n
 problemDescription | string | 問題描述
 etiologys | json array | 該問題下的所有危險因子

##### Response-etiologys
 欄位 | 型態 | 說明
 ---  | --- | ---
 etiologyId | string | 危險因子key
 etiologyI18n | string | 危險因子i18n
 etiologyDescription | string |危險因子描述

```javascript
{
    "httpCode": 200,
    "result": {
        "data": [
            {
                "problemCategoryId": "f9223c4b-4d0e-4246-b47f-8e66e856413d",
                "problemCategoryDescription": "體位",
                "problems": [
                    {
                        "problemId": "ce2ec4c5-19ea-4317-a7ea-134ad3311207",
                        "problemDescription": "體重過輕",
                        "etiologys": [
                            {
                                "etiologyId": "7a9b014c-37db-4601-a2d4-8422f11f80a6",
                                "etiologyDescription": "照顧者或本身對食物及營養相關議題有錯誤認知及態度"
                            },
                            ...
                        ]
                    }
                ]
            }
        ]
    }
}
```

### 取得用戶的建議餐盤[WEB]

```url
GET /diet-plan-mgmt/dietPlan/info?id={id}
```

#### Request
欄位 | 型態 | 說明
 ---  | --- | ---
 id | string | 餐盤ID

```javascript
```

#### Error
 httpCode | 錯誤碼 | 說明
 --- | --- | ---

#### Response
 欄位 | 型態 | 說明
 ---  | --- | ---
 id | string | 餐盤id
 createTime | timestamp | 餐盤建立時間
 updateTime | timestamp | 餐盤更新時間
 creatorId | string | 餐盤建立者ID, 空值的話代表衛福部預設餐盤
 creatorName | string | 餐盤建立者姓名, 空值的話代表衛福部預設餐盤
 creatorRole | string | 餐盤建立者腳色, 空值的話代表衛福部預設餐盤
 tenantId | string | 餐盤建立者的租戶ID, 空值的話代表衛福部預設餐盤
 tenantName | string | 餐盤建立者的租戶名稱, 空值的話代表衛福部預設餐盤
 totalCalorie | double | 本餐盤的總熱量
 totalProteinCalorie | double | 本餐盤的蛋白質熱量
 totalSugarCalorie | double | 本餐盤的醣類熱量
 totalFatCalorie | double | 本餐盤的脂肪熱量
 meals| json array | 餐點array
 nutritionalDiagnosisInfo| json object | 營養診斷資訊
 cookedTypes | json array | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型
 addedSugars | json array | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項

##### Response-meals
 欄位 | 型態 | 說明
 ---  | --- | ---
 timePeriod | int | 用餐時段, 請參閱[用餐時段](#用餐時段)
 timePeriodType | int | 用餐餐別, 請參閱[用餐餐別](#用餐餐別)
 foodCategory | string | 食物分類, 請參閱[食物分類](#食物分類)
 foodType | string | 食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG)
 cookedType | string | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型
 addedSugar | string | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項
 quantity | double | 建議用量(份)
 simpleUnit | string | 簡易單位
 quantityForSimpleUnit | double | 建議用量(簡易單位)
 calorie | double | 本餐點的熱量
 proteinCalorie | double | 本餐點的蛋白質熱量
 sugarCalorie | double | 本餐點的醣類熱量
 fatCalorie | double | 本餐點的脂肪熱量
 simpleUnitTransferCoefficient | double | 簡易單位轉換成一般份量的轉換係數<BR>上方的重量和熱量都是基於一般分量. 要用簡易熱量轉換時要乘上轉換係數<BR>e.g.: 每份熱量: 50, 轉換係數: 2, 0.5份簡易份量熱量等於: 0.5 x 2 x 50

##### Response-nutritionalDiagnosisInfo
 欄位 | 型態 | 說明
 ---  | --- | ---
 categoryId | string | 問題分類ID
 categoryI18n | string | 問題分類i18n
 categoryDescription | string | 問題分類描述
 problemId | string | 問題ID
 problemI18n | string | 問題i18n
 problemDescription | string | 問題描述
 etiologys | json array | 該問題下的所有危險因子
 etiologyId | string | 病因ID
 etiologyI18n | string | 病因i18n
 etiologyDescription | string |病因描述
 signs| string | 病徵

```javascript
{
    "httpCode": 200,
    "result": {
        "data": {
            "id": "6298166e-6dc5-435e-b113-0975d48efdb9",
            "createTime": 1664122976237,
            "updateTime": 1664122976237,
            "status": "PUBLISHED",
            "creatorId": "7a17be34-13ae-4687-b971-1e5f586c8e3a",
            "creatorName": "Dr. X",
            "creatorRole": "腳科醫生",
            "tenantId": "858b7fbb-3ba0-4d49-9882-c893a1ef07dc",
            "tenantName": "緯緯醫學",
            "totalCalorie": 324.5,
            "totalProteinCalorie": 52.0,
            "totalSugarCalorie": 88.0,
            "totalFatCalorie": 94.5,
            "meals": [
                {
                    "timePeriod": 1,
                    "timePeriodType": 10,
                    "calorie": 36.5,
                    "proteinCal": 14.0,
                    "sugarCal": 0.0,
                    "fatCal": 22.5,
                    "foodCategory": "LEGUME_FISH_MEAT_EGG",
                    "foodType": "MEDIUM_FAT",
                    "quantity": 0.5,
                    "simpleUnit": "掌心",
                    "simpleUnitTransferCoefficient": 2.0,
                    "cookedType": "FRY"
                },
                ...
            ],
            "nutritionalDiagnosisInfo": {
                "categoryId": "f9223c4b-4d0e-4246-b47f-8e66e856413d",
                "categoryDescription": "體位",
                "problemId": "ce2ec4c5-19ea-4317-a7ea-134ad3311207",
                "problemDescription": "體重過輕",
                "etiologyId": "7a9b014c-37db-4601-a2d4-8422f11f80a6",
                "etiologyDescription": "照顧者或本身對食物及營養相關議題有錯誤認知及態度",
                "signs": "test diagnosis"
            }
        }
    }
}
```

### 新增用戶的建議餐盤[WEB]

```url
POST /diet-plan-mgmt/dietPlan/add
```

#### Request
 欄位 | 型態 | 說明
 ---  | --- | ---
 householdMemberId | string | 用戶ID
 status | string | 用戶ID
 ndCategoryId | string | 營養診斷問題類別ID
 ndProblemId | string | 營養診斷問題ID
 ndEtiologyId | string | 營養診斷病因ID
 ndSigns | string | 營養診斷病徵說明
 meals | json array | 餐點array

##### Request-meals
 欄位 | 型態 | 說明
 ---  | --- | ---
 timePeriod | int | 用餐時段, 請參閱[用餐時段](#用餐時段)
 timePeriodType | int | 用餐餐別, 請參閱[用餐餐別](#用餐餐別)
 foodCategoryId | string | 食物分類ID, 請參閱[食物分類](#食物分類)
 cookedType | string | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型
 addedSugar | string | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項
 quantity | double | 建議用量(份)

```javascript
{
    "householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
    "status": "DRAFT",
    "ndCategoryId": "f9223c4b-4d0e-4246-b47f-8e66e856413d",
    "ndProblemId": "ce2ec4c5-19ea-4317-a7ea-134ad3311207",
    "ndEtiologyId": "7a9b014c-37db-4601-a2d4-8422f11f80a6",
    "ndSigns": "test diagnosis",
    "meals": [
        {
            "timePeriod": 1,
            "timePeriodType": 10,
            "foodCategoryId": "3844d748-c46d-416f-bd0c-e11241d42e47",
            "quantity": 3,
            "cookedType": "FRY"
        }
    ]
}
```

#### Error
 httpCode | 錯誤碼 | 說明
 --- | --- | ---
 400 | API_ERROR.DIET_PLAN_DRAFT_PLATE_EXIST | 當前存在草稿餐盤

#### Response
 欄位 | 型態 | 說明
 ---  | --- | ---
 data | int | 新增的餐點數量

```javascript
{
    "httpCode": 200,
    "result": {
        "data": 1
    }
}
```

### 更新用戶的建議餐盤[WEB]

```url
POST /diet-plan-mgmt/dietPlan/update
```

#### Request
 欄位 | 型態 | 說明
 ---  | --- | ---
 id | string | 餐盤ID
 householdMemberId | string | 用戶ID
 status | string | 用戶ID
 ndCategoryId | string | 營養診斷問題類別ID
 ndProblemId | string | 營養診斷問題ID
 ndEtiologyId | string | 營養診斷病因ID
 ndSigns | string | 營養診斷病徵說明
 meals | json array | 餐點array

##### Request-meals
 欄位 | 型態 | 說明
 ---  | --- | ---
 timePeriod | int | 用餐時段, 請參閱[用餐時段](#用餐時段)
 timePeriodType | int | 用餐餐別, 請參閱[用餐餐別](#用餐餐別)
 foodCategoryId | string | 食物分類ID, 請參閱[食物分類](#食物分類)
 cookedType | string | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型
 addedSugar | string | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項
 quantity | double | 建議用量(份)

```javascript
{
    "id": "c905078a-c1ee-4802-a852-a5ee6b2f64e9",
    "householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
    "status": "PUBLISHED",
    "ndCategoryId": "f9223c4b-4d0e-4246-b47f-8e66e856413d",
    "ndProblemId": "ce2ec4c5-19ea-4317-a7ea-134ad3311207",
    "ndEtiologyId": "7a9b014c-37db-4601-a2d4-8422f11f80a6",
    "ndSigns": "test diagnosis",
    "meals": [
        {
            "timePeriod": 1,
            "timePeriodType": 11,
            "foodCategoryId": "3844d748-c46d-416f-bd0c-e11241d42e47",
            "quantity": 4,
            "cookedType": "FRY"
        }
    ]
}
```

#### Error
 httpCode | 錯誤碼 | 說明
 --- | --- | ---
 400 | API_ERROR.DIET_PLAN_PLATE_STATUS_NOT_DRAFT | 更新的餐盤並非草稿狀態

#### Response
欄位 | 型態 | 說明
 ---  | --- | ---
 data | int | 更新的餐點數量

```javascript
{
    "httpCode": 200,
    "result": {
        "data": 1
    }
}
```

### 刪除用戶的建議餐盤[WEB]
```url
POST /diet-plan-mgmt/dietPlan/delete
```

#### Request
欄位 | 型態 | 說明
 ---  | --- | ---
 id | string | 餐盤ID


```javascript
{
    "id": "c905078a-c1ee-4802-a852-a5ee6b2f64e9"
}
```

#### Error
httpCode | 錯誤碼 | 說明
 --- | --- | ---
 400 | API_ERROR.DIET_PLAN_PLATE_STATUS_NOT_DRAFT | 刪除的餐盤並非草稿狀態

#### Response
欄位 | 型態 | 說明
 ---  | --- | ---
 data | int | 刪除的餐盤數量

```javascript
{
    "httpCode": 200,
    "result": {
        "data": 1
    }
}
```


### 圴衡飲食趨勢分析[WEB]

```url
POST /diet-plan-mgmt/diet/trend
```

* 包含飲食分數, 飲食記錄攝取熱量, 調整後攝取熱量, 三大營養素熱量比率
* 飲食分數是以整天為計算基礎
* 以月查詢時, detailList裡為每個月的平均資料(分母為當月總天數)

#### Request-圴衡飲食趨勢分析
 欄位 | 型態 | 預設 | 說明
 --- | --- | --- |---
 query | json | | 查詢條件json

##### Request-圴衡飲食趨勢分析-query(查詢條件json)
 欄位 | 型態  | 必填 | 長度限制 | 預設 | 說明
 ---|---|---|---|---|---
 householdMemberId | string | WEB:**Y** |  | | Web端必填, APP端由token取得
 startDate | string | Y |  | | 要搜尋的起始日期, YYYY-MM-DD, 或毫秒值
 endDate | string | Y |  | | 要搜尋的結束日期, YYYY-MM-DD, 或毫秒值
 scorePeriod | string | Y | | | 飲食分數查詢區間類別, 請參閱[飲食分數查詢區間類別](#飲食分數查詢區間類別), 目前只能選DAILY及MONTHLY


```javascript
{    
    "query": {
        "householdMemberId": "c0fbb6d5-53c4-4962-bc17-1591e4903b2f",
        "startDate": "2022-12-01",
        "endDate": "2023-02-22",
        "scorePeriod": "MONTHLY"
    }
}
```

#### Response-圴衡飲食趨勢分析
 欄位 | 型態 | 說明
 ---  | --- | ---
 recordDays | int | 有飲食記錄的記錄天數
 avgScore | double | 均衡飲食平均分數
 scoreDelta | double | 均衡飲食分數變化, 為最新一筆資料分數-最舊一筆資料分數
 trendSummaryInfo | json | 均衡飲食 summary json, 用來取出總結的三大營業素的比率
 detailList | json array | 均衡飲食 json list

##### Response-圴衡飲食趨勢分析-trendSummaryInfo(json)
請參閱[detalList(json)](#Response-圴衡飲食趨勢分析-detailListjson)

##### Response-圴衡飲食趨勢分析-detailList(json)
 欄位 | 型態 | 說明
 ---  | --- | ---
 dietDate | date | 飲食記錄日期, trendSummaryInfo json無此欄位, 若查詢條件scorePeriod=MONTHLY, 表示該月1號
 score | double | 飲食分數
 totalCalorie  | double | 攝取總熱量
 protein  | double | 攝取蛋白質(g)
 carbohydrate  | double | 攝取碳水化合物(g)
 fat | double | 攝取脂肪(g)
 proteinCal  | double | 攝取蛋白質熱量
 carbohydrateCal  | double | 攝取碳水化合物熱量
 fatCal | double | 攝取脂肪熱量
 proteinRate  | double | 攝取蛋白質比率(%)
 carbohydrateRate  | double | 攝取碳水化合物比率(%)
 fatRate | double | 攝取脂肪比率(%)
 isAdjust | boolean | 飲食記錄是否有調整過, true表示有調整過, 請直接使用調整後的相關欄位數值
 adjustTotalCalorie  | double | 調整後攝取總熱量
 adjustProtein  | double | 調整後攝取蛋白質(g)
 adjustCarbohydrate  | double | 調整後攝取碳水化合物(g)
 adjustFat | double | 調整後攝取脂肪(g)
 adjustProteinCal  | double | 調整後攝取蛋白質熱量
 adjustCarbohydrateCal  | double | 調整後攝取碳水化合物熱量
 adjustFatCal | double | 調整後攝取脂肪熱量
 adjustProteinRate  | double | 調整後攝取蛋白質比率(%)
 adjustCarbohydrateRate  | double | 調整後攝取碳水化合物比率(%)
 adjustFatRate | double | 調整後攝取脂肪比率(%)

```javascript
{
    "httpCode": 200,
    "result": {
        "data": {
            "recordDays": 12,
            "avgScore": 2.28,
            "scoreDelta": -5.42,
            "trendSummaryInfo": {
                "totalCalorie": 82.28,
                "protein": 3.92,
                "carbohydrate": 7.77,
                "fat": 3.95,
                "proteinCal": 15.66,
                "carbohydrateCal": 31.08,
                "fatCal": 35.58,
                "proteinRate": 19,
                "carbohydrateRate": 38,
                "fatRate": 43,
                "isAdjust": true,
                "adjustTotalCalorie": 118.38,
                "adjustProtein": 6.11,
                "adjustCarbohydrate": 11.14,
                "adjustFat": 5.49,
                "adjustProteinCal": 24.43,
                "adjustCarbohydrateCal": 44.57,
                "adjustFatCal": 49.43,
                "adjustProteinRate": 21,
                "adjustCarbohydrateRate": 38,
                "adjustFatRate": 42,
                "score": 3.42
            },
            "detailList": [
                {
                    "dietDate": 1675180800000,
                    "totalCalorie": 16,
                    "protein": 0.61,
                    "carbohydrate": 1.25,
                    "fat": 0.95,
                    "proteinCal": 2.43,
                    "carbohydrateCal": 5,
                    "fatCal": 8.58,
                    "proteinRate": 15,
                    "carbohydrateRate": 31,
                    "fatRate": 54,
                    "isAdjust": false,
                    "adjustTotalCalorie": 16,
                    "adjustProtein": 0.61,
                    "adjustCarbohydrate": 1.25,
                    "adjustFat": 0.95,
                    "adjustProteinCal": 2.43,
                    "adjustCarbohydrateCal": 5,
                    "adjustFatCal": 8.58,
                    "adjustProteinRate": 15,
                    "adjustCarbohydrateRate": 31,
                    "adjustFatRate": 54,
                    "score": 0.71
                },
                {
                    "dietDate": 1669824000000,
                    "totalCalorie": 148.56,
                    "protein": 7.22,
                    "carbohydrate": 14.29,
                    "fat": 6.95,
                    "proteinCal": 28.88,
                    "carbohydrateCal": 57.16,
                    "fatCal": 62.58,
                    "proteinRate": 19,
                    "carbohydrateRate": 38,
                    "fatRate": 42,
                    "isAdjust": true,
                    "adjustTotalCalorie": 220.75,
                    "adjustProtein": 11.61,
                    "adjustCarbohydrate": 21.03,
                    "adjustFat": 10.03,
                    "adjustProteinCal": 46.43,
                    "adjustCarbohydrateCal": 84.13,
                    "adjustFatCal": 90.28,
                    "adjustProteinRate": 21,
                    "adjustCarbohydrateRate": 38,
                    "adjustFatRate": 41,
                    "score": 6.13
                }
            ]
        }
    }
}
```:::spoiler API 清單
[TOC]
:::

# 智慧餐盤
## 常數定義
### 食物分類
 欄位 | 型態  | 說明
 ---|---|---
 category | string | WHOLE_GRAINS: 全榖雜糧, LEGUME_FISH_MEAT_EGG: 豆魚肉蛋, DAIRY: 乳製品, VEGETABLES: 蔬菜, FRUITS: 水果, OILS_AND_NUTS: 食用油與堅果, DRINK: 飲料, OTHER: 其他

### 食物類型-LEGUME_FISH_MEAT_EGG
 欄位 | 型態  | 說明
 ---|---|---
 type | string | LOW_FAT: 低脂, MEDIUM_FAT: 中脂, HIGH_FAT: 高脂, VERY_HIGH_FAT: 超高脂

### 食物類型-DAIRY
 欄位 | 型態  | 說明
 ---|---|---
 type | string | LOW_FAT: 低脂, WHOLE_FAT: 全脂, SKIM: 脫脂

### 食物類型-VEGETABLES
 欄位 | 型態  | 說明
 ---|---|---
 type | string | RAW: 生, COOKED: 熟

### 食物類型-OILS_AND_NUTS
 欄位 | 型態  | 說明
 ---|---|---
 type | string | OIL: 食用油, NUT: 堅果

### 食物類型-DRINK
 欄位 | 型態  | 說明
 ---|---|---
 type | string | WATER: 水, FULL_SUGAR: 全糖, LESS_SUGAR: 少糖, HALF_SUGAR: 半糖, QUARTER_SUGAR: 微糖, SUGAR_FREE: 無糖

### 用餐時段
 欄位 | 型態  | 說明
 ---|---|---
 timePeriod | int | ALL: -1(查詢用), 早上: 1, 中午: 2, 晚上: 3, 睡前: 4

### 用餐餐別
 欄位 | 型態  | 說明
 ---|---|---
 timePeriodType | int | ALL: -1(查詢用), <br/> **早上**<br/> 早餐: 10, 早午餐: 11, 運動前一小時: 12, 運動前兩小時: 13, 運動後一小時: 14, 運動後兩小時: 15, <br/> **中午**<br/> 午餐: 20, 下午茶: 21, 運動前一小時: 22, 運動前兩小時: 23, 運動後一小時: 24, 運動後兩小時: 25, <br/> **晚上**<br/> 晚餐: 30, 點心: 31, 運動前一小時: 32, 運動前兩小時: 33, 運動後一小時: 34, 運動後兩小時: 35 <br/>  **睡前**<br/> 40:宵夜, 運動前一小時: 42, 運動前兩小時: 43, 運動後一小時: 44, 運動後兩小時: 45

### 烹調方式
 欄位 | 型態  | 說明
 ---|---|---
 type | string | FAT_FREE: 無油, FRY: 非油炸, FRIED: 油炸

### 額外加糖
 欄位 | 型態  | 說明
 ---|---|---
 type | string | NONE: 無添加, WITH_SUGAR: 加糖

### 餐盤狀態
 欄位 | 型態  | 說明
 ---|---|---
 status | string | DRAFT: 草稿, PUBLISHED:  已發布

### 飲食記錄方式
 欄位 | 型態  | 說明
 ---|---|---
 diaryRecordType | string | DIET_PLAN: 我的餐盤, FOOD_DB: 食品資料庫

### 飲食分數查詢區間類別
 欄位 | 型態  | 說明
 ---|---|---
 scorePeriod | string | DAILY: 日, WEEKLY: 週, MONTHLY: 月


## API
### 取得六大營養素資訊[APP/WEB]

```url
GET /diet-plan/getIngredientsInfo
```

取得六大營養素的類別/分類/熱量

#### Request

#### Response
 欄位 | 型態 | 說明
 ---  | --- | ---
 category | string | 食物分類, 請參閱[食物分類](#食物分類)
 types | json array | 在食物分類下的所有類型食材
 cookedTypes | json array | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型
 addedSugars | json array | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項

##### Response-types
 欄位 | 型態 | 說明
 ---  | --- | ---
 id | string | 食材id
 description | string | 食材描述
 type | string | 食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG)
 simpleUnit | string | 簡易份量單位
 calorie | double | 每份量的熱量
 protein | double | 每份量的蛋白質重量(g)
 sugar | double | 每份量的糖重量(g)
 fat | double | 每份量的脂肪重量(g)
 protein_cal | double | 每份量的蛋白質熱量
 sugar_cal | double | 每份量的糖熱量
 fat_cal | double | 每份量的脂肪熱量
 simpleUnitTransferCoefficient | double | 簡易單位轉換成一般份量的轉換係數<BR>上方的重量和熱量都是基於一般分量. 要用簡易熱量轉換時要乘上轉換係數<BR>e.g.: 每份熱量: 50, 轉換係數: 2, 0.5份簡易份量熱量等於: 0.5 x 2 x 50

 ##### Response-cookedTypes/addedSugars
 欄位 | 型態 | 說明
 ---  | --- | ---
 id | string | 食材id
 description | string | 食材描述
 type | string | 食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG)
 calorie | double | 每份量的熱量
 protein | double | 每份量的蛋白質重量(g)
 sugar | double | 每份量的糖重量(g)
 fat | double | 每份量的脂肪重量(g)
 protein_cal | double | 每份量的蛋白質熱量
 sugar_cal | double | 每份量的糖熱量
 fat_cal | double | 每份量的脂肪熱量

```javascript
{
    "httpCode": 200,
    "result": {
        "data": [
            {
                "category": "LEGUME_FISH_MEAT_EGG",
                "types": [
                    {
                        "id": "5ac5e206-881d-4d0d-b6b7-6ef9c61713b4",
                        "description": "豆魚肉蛋(中脂)",
                        "type": "MEDIUM_FAT",
                        "simpleUnit": "掌心",
                        "simpleUnitTransferCoefficient": 2.0,
                        "protein": 7.0,
                        "fat": 5.0,
                        "calorie": 73.0,
                        "proteinCal": 28.0,
                        "fatCal": 20.0
                    }...
                ],
                "cookedTypes": [
                    {
                        "id": "01a74fad-3df8-429e-8507-2392969b5585",
                        "description": "烹調方式(無油)",
                        "type": "FAT_FREE",
                        "fat": 0.0,
                        "calorie": 0.0,
                        "fatCal": 0.0
                    },
                    ...
                ],
                "addedSugars": []
            },
        ]
    }
}
```

### 取得我的建議餐盤[APP]

```url
GET /diet-plan/getMySuggestPlan
```

取得我的建議餐盤

#### Request

#### Response-取得我的建議餐盤
 欄位 | 型態 | 說明
 ---  | --- | ---
 id | string | 餐盤id
 createTime | timestamp | 餐盤建立時間
 updateTime | timestamp | 餐盤更新時間
 creatorId | string | 餐盤建立者ID, 空值的話代表衛福部預設餐盤
 creatorName | string | 餐盤建立者姓名, 空值的話代表衛福部預設餐盤
 creatorRole | string | 餐盤建立者腳色, 空值的話代表衛福部預設餐盤
 tenantId | string | 餐盤建立者的租戶ID, 空值的話代表衛福部預設餐盤
 tenantName | string | 餐盤建立者的租戶名稱, 空值的話代表衛福部預設餐盤
 totalCalorie | double | 本餐盤的總熱量
 totalProteinCalorie | double | 本餐盤的蛋白質熱量
 totalSugarCalorie | double | 本餐盤的醣類熱量
 totalFatCalorie | double | 本餐盤的脂肪熱量
 timePeriods| json array | 餐盤時段array
 cookedTypes | json array | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型
 addedSugars | json array | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項

##### Response-timePeriods
 欄位 | 型態 | 說明
 ---  | --- | ---
 timePeriod | int | 用餐時段, 請參閱[用餐時段](#用餐時段)
 timePeriodTypes | json array | 用餐餐別

##### Response-timePeriodTypes
 欄位 | 型態 | 說明
 ---  | --- | ---
 timePeriodType | int | 用餐餐別, 請參閱[用餐餐別](#用餐餐別)
 totalCalorie | double | 本餐別的總熱量
 totalProteinCalorie | double | 本餐別的蛋白質熱量
 totalSugarCalorie | double | 本餐別的醣類熱量
 totalFatCalorie | double | 本餐別的脂肪熱量
 meals | json array | 建議餐點類型與用量
 foodCategorys| json array| 建議餐點的熱量和用量根據食物分類統計

##### Response-meals
 欄位 | 型態 | 說明
 ---  | --- | ---
 foodCategory | string | 食物分類, 請參閱[食物分類](#食物分類)
 foodType | string | 食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG)
 cookedType | string | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型
 addedSugar | string | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項
 quantity | double | 建議用量(份)
 simpleUnit | string | 簡易單位
 calorie | double | 本餐點的熱量
 proteinCalorie | double | 本餐點的蛋白質熱量
 sugarCalorie | double | 本餐點的醣類熱量
 fatCalorie | double | 本餐點的脂肪熱量
 simpleUnitTransferCoefficient | double | 簡易單位轉換成一般份量的轉換係數<BR/>上方的重量和熱量都是基於一般分量. 要用簡易熱量轉換時要乘上轉換係數<BR>e.g.: 每份熱量: 50, 轉換係數: 2, 0.5份簡易份量熱量等於: 0.5 x 2 x 50

##### Response-foodCategorys
 欄位 | 型態 | 說明
 ---  | --- | ---
 foodCategory | string | 食物分類, 請參閱[食物分類](#食物分類)
 quantity | double | 建議用量(份)
 simpleUnit | string | 簡易單位
 calorie | double | 本餐點的熱量
 proteinCalorie | double | 本餐點的蛋白質熱量
 sugarCalorie | double | 本餐點的醣類熱量
 fatCalorie | double | 本餐點的脂肪熱量
 simpleUnitTransferCoefficient | double | 簡易單位轉換成一般份量的轉換係數<BR/>上方的重量和熱量都是基於一般分量. 要用簡易熱量轉換時要乘上轉換係數<BR>e.g.: 每份熱量: 50, 轉換係數: 2, 0.5份簡易份量熱量等於: 0.5 x 2 x 50

```javascript
{
    "httpCode": 200,
    "result": {
        "data": {
            "id": "6298166e-6dc5-435e-b113-0975d48efdb9",
            "createTime": 1664122976237,
            "updateTime": 1664122976237,
            "creatorId": "7a17be34-13ae-4687-b971-1e5f586c8e3a",
            "creatorName": "Dr. X",
            "creatorRole": "腳科醫生",
            "tenantId": "858b7fbb-3ba0-4d49-9882-c893a1ef07dc",
            "tenantName": "緯緯醫學",
            "totalCalorie": 324.5,
            "totalProteinCalorie": 52.0,
            "totalSugarCalorie": 88.0,
            "totalFatCalorie": 94.5,
            "timePeriods": [
                {
                    "timePeriod": 1,
                    "timePeriodTypes": [
                        {
                            "timePeriodType": 10,
                            "totalCalorie": 324.5,
                            "totalProteinCalorie": 52.0,
                            "totalSugarCalorie": 88.0,
                            "totalFatCalorie": 94.5,
                            "meals": [
                                {
                                    "foodCategory": "LEGUME_FISH_MEAT_EGG",
                                    "foodType": "MEDIUM_FAT",
                                    "quantity": 0.5,
                                    "simpleUnit": "掌心",
                                    "simpleUnitTransferCoefficient": 2.0,
                                    "cookedType": "FRY",
                                    "calorie": 36.5,
                                    "proteinCalorie": 14.0,
                                    "sugarCalorie": 0.0,
                                    "fatCalorie": 22.5
                                },...
                            ],
                            "foodCategorys": [
                                {
                                    "calorie": 45.0,
                                    "proteinCal": 0.0,
                                    "sugarCal": 0.0,
                                    "fatCal": 45.0,
                                    "foodCategory": "OILS_AND_NUTS",
                                    "quantity": 1.0,
                                    "simpleUnit": "茶匙5ml",
                                    "simpleUnitTransferCoefficient": 0.333333
                            },
                        }
                    ]
                }
            ]
        }
    }
}
```

### 查詢用戶的餐盤清單[WEB]

```url
POST /diet-plan-mgmt/queryDietPlanList
```

取得用戶的所有建議餐盤

#### Request
##### query (查詢條件json)
 欄位 | 型態  | 必填 | 長度限制 | 預設 | 說明
 ---|---|---|---|---|---
 householdMemberId | string | |  | | 要查詢的用戶ID

##### pagination (分頁json)
 欄位 | 型態  | 必填 | 預設 | 說明
 ---|---|---|---|---
 current | int | | 1 | 當前頁數
 pageSize | int | | 10 | 每頁結果數量，-1 為顯示所有

##### sorter (排序json)
 欄位 | 型態  | 必填 | 預設 | 說明
 ---|---|---|---|---
 field | string | | createTime | 排序欄位,可排序欄位有 totalCalories, creatorName, status, updateTime
 order | string | | desc | 升序或降序

```javascript
{
   "query": {
       "householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5"
   }
}
```

#### Error
 httpCode | 錯誤碼 | 說明
 --- | --- | ---

#### Response
 欄位 | 型態 | 說明
 ---  | --- | ---
 id | string | 餐盤id
 createTime | timestamp | 餐盤建立時間
 updateTime | timestamp | 餐盤更新時間
 creatorId | string | 餐盤建立者ID, 空值的話代表衛福部預設餐盤
 creatorName | string | 餐盤建立者姓名, 空值的話代表衛福部預設餐盤
 tenantId | string | 餐盤建立者的租戶ID, 空值的話代表衛福部預設餐盤
 tenantName | string | 餐盤建立者的租戶名稱, 空值的話代表衛福部預設餐盤
 totalCalorie| double | 該餐盤的總建議熱量
 status | string | 餐盤狀態, 請參閱[餐盤狀態](#餐盤狀態)

```javascript
{
    "httpCode": 200,
    "result": {
        "data": [
            {
                "id": "6298166e-6dc5-435e-b113-0975d48efdb9",
                "createTime": 1664122976237,
                "updateTime": 1664122976237,
                "status": "PUBLISHED",
                "creatorId": "7a17be34-13ae-4687-b971-1e5f586c8e3a",
                "creatorName": "Dr. X",
                "tenantId": "858b7fbb-3ba0-4d49-9882-c893a1ef07dc",
                "tenantName": "緯緯醫學",
                "totalCalorie": 324.5
            },
            ...
        ]
    }
}
```

### 取得營養診斷資訊[WEB]

```url
GET /diet-plan-mgmt/getNutritionalDiagnosisInfo
```

取得營養診斷資訊

#### Request

#### Error
 httpCode | 錯誤碼 | 說明
 --- | --- | ---

#### Response
 欄位 | 型態 | 說明
 ---  | --- | ---
 problemCategoryId | string | 問題分類key
 problemCategoryI18n | string | 問題分類i18n
 problemCategoryDescription | string | 問題分類描述
 problems | json array | 該問題分類下的所有問題

##### Response-problems
 欄位 | 型態 | 說明
 ---  | --- | ---
 problemId | string | 問題key
 problemI18n | string | 問題i18n
 problemDescription | string | 問題描述
 etiologys | json array | 該問題下的所有危險因子

##### Response-etiologys
 欄位 | 型態 | 說明
 ---  | --- | ---
 etiologyId | string | 危險因子key
 etiologyI18n | string | 危險因子i18n
 etiologyDescription | string |危險因子描述

```javascript
{
    "httpCode": 200,
    "result": {
        "data": [
            {
                "problemCategoryId": "f9223c4b-4d0e-4246-b47f-8e66e856413d",
                "problemCategoryDescription": "體位",
                "problems": [
                    {
                        "problemId": "ce2ec4c5-19ea-4317-a7ea-134ad3311207",
                        "problemDescription": "體重過輕",
                        "etiologys": [
                            {
                                "etiologyId": "7a9b014c-37db-4601-a2d4-8422f11f80a6",
                                "etiologyDescription": "照顧者或本身對食物及營養相關議題有錯誤認知及態度"
                            },
                            ...
                        ]
                    }
                ]
            }
        ]
    }
}
```

### 取得用戶的建議餐盤[WEB]

```url
GET /diet-plan-mgmt/dietPlan/info?id={id}
```

#### Request
欄位 | 型態 | 說明
 ---  | --- | ---
 id | string | 餐盤ID

```javascript
```

#### Error
 httpCode | 錯誤碼 | 說明
 --- | --- | ---

#### Response
 欄位 | 型態 | 說明
 ---  | --- | ---
 id | string | 餐盤id
 createTime | timestamp | 餐盤建立時間
 updateTime | timestamp | 餐盤更新時間
 creatorId | string | 餐盤建立者ID, 空值的話代表衛福部預設餐盤
 creatorName | string | 餐盤建立者姓名, 空值的話代表衛福部預設餐盤
 creatorRole | string | 餐盤建立者腳色, 空值的話代表衛福部預設餐盤
 tenantId | string | 餐盤建立者的租戶ID, 空值的話代表衛福部預設餐盤
 tenantName | string | 餐盤建立者的租戶名稱, 空值的話代表衛福部預設餐盤
 totalCalorie | double | 本餐盤的總熱量
 totalProteinCalorie | double | 本餐盤的蛋白質熱量
 totalSugarCalorie | double | 本餐盤的醣類熱量
 totalFatCalorie | double | 本餐盤的脂肪熱量
 meals| json array | 餐點array
 nutritionalDiagnosisInfo| json object | 營養診斷資訊
 cookedTypes | json array | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型
 addedSugars | json array | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項

##### Response-meals
 欄位 | 型態 | 說明
 ---  | --- | ---
 timePeriod | int | 用餐時段, 請參閱[用餐時段](#用餐時段)
 timePeriodType | int | 用餐餐別, 請參閱[用餐餐別](#用餐餐別)
 foodCategory | string | 食物分類, 請參閱[食物分類](#食物分類)
 foodType | string | 食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG)
 cookedType | string | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型
 addedSugar | string | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項
 quantity | double | 建議用量(份)
 simpleUnit | string | 簡易單位
 quantityForSimpleUnit | double | 建議用量(簡易單位)
 calorie | double | 本餐點的熱量
 proteinCalorie | double | 本餐點的蛋白質熱量
 sugarCalorie | double | 本餐點的醣類熱量
 fatCalorie | double | 本餐點的脂肪熱量
 simpleUnitTransferCoefficient | double | 簡易單位轉換成一般份量的轉換係數<BR>上方的重量和熱量都是基於一般分量. 要用簡易熱量轉換時要乘上轉換係數<BR>e.g.: 每份熱量: 50, 轉換係數: 2, 0.5份簡易份量熱量等於: 0.5 x 2 x 50

##### Response-nutritionalDiagnosisInfo
 欄位 | 型態 | 說明
 ---  | --- | ---
 categoryId | string | 問題分類ID
 categoryI18n | string | 問題分類i18n
 categoryDescription | string | 問題分類描述
 problemId | string | 問題ID
 problemI18n | string | 問題i18n
 problemDescription | string | 問題描述
 etiologys | json array | 該問題下的所有危險因子
 etiologyId | string | 病因ID
 etiologyI18n | string | 病因i18n
 etiologyDescription | string |病因描述
 signs| string | 病徵

```javascript
{
    "httpCode": 200,
    "result": {
        "data": {
            "id": "6298166e-6dc5-435e-b113-0975d48efdb9",
            "createTime": 1664122976237,
            "updateTime": 1664122976237,
            "status": "PUBLISHED",
            "creatorId": "7a17be34-13ae-4687-b971-1e5f586c8e3a",
            "creatorName": "Dr. X",
            "creatorRole": "腳科醫生",
            "tenantId": "858b7fbb-3ba0-4d49-9882-c893a1ef07dc",
            "tenantName": "緯緯醫學",
            "totalCalorie": 324.5,
            "totalProteinCalorie": 52.0,
            "totalSugarCalorie": 88.0,
            "totalFatCalorie": 94.5,
            "meals": [
                {
                    "timePeriod": 1,
                    "timePeriodType": 10,
                    "calorie": 36.5,
                    "proteinCal": 14.0,
                    "sugarCal": 0.0,
                    "fatCal": 22.5,
                    "foodCategory": "LEGUME_FISH_MEAT_EGG",
                    "foodType": "MEDIUM_FAT",
                    "quantity": 0.5,
                    "simpleUnit": "掌心",
                    "simpleUnitTransferCoefficient": 2.0,
                    "cookedType": "FRY"
                },
                ...
            ],
            "nutritionalDiagnosisInfo": {
                "categoryId": "f9223c4b-4d0e-4246-b47f-8e66e856413d",
                "categoryDescription": "體位",
                "problemId": "ce2ec4c5-19ea-4317-a7ea-134ad3311207",
                "problemDescription": "體重過輕",
                "etiologyId": "7a9b014c-37db-4601-a2d4-8422f11f80a6",
                "etiologyDescription": "照顧者或本身對食物及營養相關議題有錯誤認知及態度",
                "signs": "test diagnosis"
            }
        }
    }
}
```

### 新增用戶的建議餐盤[WEB]

```url
POST /diet-plan-mgmt/dietPlan/add
```

#### Request
 欄位 | 型態 | 說明
 ---  | --- | ---
 householdMemberId | string | 用戶ID
 status | string | 用戶ID
 ndCategoryId | string | 營養診斷問題類別ID
 ndProblemId | string | 營養診斷問題ID
 ndEtiologyId | string | 營養診斷病因ID
 ndSigns | string | 營養診斷病徵說明
 meals | json array | 餐點array

##### Request-meals
 欄位 | 型態 | 說明
 ---  | --- | ---
 timePeriod | int | 用餐時段, 請參閱[用餐時段](#用餐時段)
 timePeriodType | int | 用餐餐別, 請參閱[用餐餐別](#用餐餐別)
 foodCategoryId | string | 食物分類ID, 請參閱[食物分類](#食物分類)
 cookedType | string | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型
 addedSugar | string | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項
 quantity | double | 建議用量(份)

```javascript
{
    "householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
    "status": "DRAFT",
    "ndCategoryId": "f9223c4b-4d0e-4246-b47f-8e66e856413d",
    "ndProblemId": "ce2ec4c5-19ea-4317-a7ea-134ad3311207",
    "ndEtiologyId": "7a9b014c-37db-4601-a2d4-8422f11f80a6",
    "ndSigns": "test diagnosis",
    "meals": [
        {
            "timePeriod": 1,
            "timePeriodType": 10,
            "foodCategoryId": "3844d748-c46d-416f-bd0c-e11241d42e47",
            "quantity": 3,
            "cookedType": "FRY"
        }
    ]
}
```

#### Error
 httpCode | 錯誤碼 | 說明
 --- | --- | ---
 400 | API_ERROR.DIET_PLAN_DRAFT_PLATE_EXIST | 當前存在草稿餐盤

#### Response
 欄位 | 型態 | 說明
 ---  | --- | ---
 data | int | 新增的餐點數量

```javascript
{
    "httpCode": 200,
    "result": {
        "data": 1
    }
}
```

### 更新用戶的建議餐盤[WEB]

```url
POST /diet-plan-mgmt/dietPlan/update
```

#### Request
 欄位 | 型態 | 說明
 ---  | --- | ---
 id | string | 餐盤ID
 householdMemberId | string | 用戶ID
 status | string | 用戶ID
 ndCategoryId | string | 營養診斷問題類別ID
 ndProblemId | string | 營養診斷問題ID
 ndEtiologyId | string | 營養診斷病因ID
 ndSigns | string | 營養診斷病徵說明
 meals | json array | 餐點array

##### Request-meals
 欄位 | 型態 | 說明
 ---  | --- | ---
 timePeriod | int | 用餐時段, 請參閱[用餐時段](#用餐時段)
 timePeriodType | int | 用餐餐別, 請參閱[用餐餐別](#用餐餐別)
 foodCategoryId | string | 食物分類ID, 請參閱[食物分類](#食物分類)
 cookedType | string | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型
 addedSugar | string | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項
 quantity | double | 建議用量(份)

```javascript
{
    "id": "c905078a-c1ee-4802-a852-a5ee6b2f64e9",
    "householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
    "status": "PUBLISHED",
    "ndCategoryId": "f9223c4b-4d0e-4246-b47f-8e66e856413d",
    "ndProblemId": "ce2ec4c5-19ea-4317-a7ea-134ad3311207",
    "ndEtiologyId": "7a9b014c-37db-4601-a2d4-8422f11f80a6",
    "ndSigns": "test diagnosis",
    "meals": [
        {
            "timePeriod": 1,
            "timePeriodType": 11,
            "foodCategoryId": "3844d748-c46d-416f-bd0c-e11241d42e47",
            "quantity": 4,
            "cookedType": "FRY"
        }
    ]
}
```

#### Error
 httpCode | 錯誤碼 | 說明
 --- | --- | ---
 400 | API_ERROR.DIET_PLAN_PLATE_STATUS_NOT_DRAFT | 更新的餐盤並非草稿狀態

#### Response
欄位 | 型態 | 說明
 ---  | --- | ---
 data | int | 更新的餐點數量

```javascript
{
    "httpCode": 200,
    "result": {
        "data": 1
    }
}
```

### 刪除用戶的建議餐盤[WEB]
```url
POST /diet-plan-mgmt/dietPlan/delete
```

#### Request
欄位 | 型態 | 說明
 ---  | --- | ---
 id | string | 餐盤ID


```javascript
{
    "id": "c905078a-c1ee-4802-a852-a5ee6b2f64e9"
}
```

#### Error
httpCode | 錯誤碼 | 說明
 --- | --- | ---
 400 | API_ERROR.DIET_PLAN_PLATE_STATUS_NOT_DRAFT | 刪除的餐盤並非草稿狀態

#### Response
欄位 | 型態 | 說明
 ---  | --- | ---
 data | int | 刪除的餐盤數量

```javascript
{
    "httpCode": 200,
    "result": {
        "data": 1
    }
}
```


### 圴衡飲食趨勢分析[WEB]

```url
POST /diet-plan-mgmt/diet/trend
```

* 包含飲食分數, 飲食記錄攝取熱量, 調整後攝取熱量, 三大營養素熱量比率
* 飲食分數是以整天為計算基礎
* 以月查詢時, detailList裡為每個月的平均資料(分母為當月總天數)

#### Request-圴衡飲食趨勢分析
 欄位 | 型態 | 預設 | 說明
 --- | --- | --- |---
 query | json | | 查詢條件json

##### Request-圴衡飲食趨勢分析-query(查詢條件json)
 欄位 | 型態  | 必填 | 長度限制 | 預設 | 說明
 ---|---|---|---|---|---
 householdMemberId | string | WEB:**Y** |  | | Web端必填, APP端由token取得
 startDate | string | Y |  | | 要搜尋的起始日期, YYYY-MM-DD, 或毫秒值
 endDate | string | Y |  | | 要搜尋的結束日期, YYYY-MM-DD, 或毫秒值
 scorePeriod | string | Y | | | 飲食分數查詢區間類別, 請參閱[飲食分數查詢區間類別](#飲食分數查詢區間類別), 目前只能選DAILY及MONTHLY


```javascript
{    
    "query": {
        "householdMemberId": "c0fbb6d5-53c4-4962-bc17-1591e4903b2f",
        "startDate": "2022-12-01",
        "endDate": "2023-02-22",
        "scorePeriod": "MONTHLY"
    }
}
```

#### Response-圴衡飲食趨勢分析
 欄位 | 型態 | 說明
 ---  | --- | ---
 recordDays | int | 有飲食記錄的記錄天數
 avgScore | double | 均衡飲食平均分數
 scoreDelta | double | 均衡飲食分數變化, 為最新一筆資料分數-最舊一筆資料分數
 trendSummaryInfo | json | 均衡飲食 summary json, 用來取出總結的三大營業素的比率
 detailList | json array | 均衡飲食 json list

##### Response-圴衡飲食趨勢分析-trendSummaryInfo(json)
請參閱[detalList(json)](#Response-圴衡飲食趨勢分析-detailListjson)

##### Response-圴衡飲食趨勢分析-detailList(json)
 欄位 | 型態 | 說明
 ---  | --- | ---
 dietDate | date | 飲食記錄日期, trendSummaryInfo json無此欄位, 若查詢條件scorePeriod=MONTHLY, 表示該月1號
 score | double | 飲食分數
 totalCalorie  | double | 攝取總熱量
 protein  | double | 攝取蛋白質(g)
 carbohydrate  | double | 攝取碳水化合物(g)
 fat | double | 攝取脂肪(g)
 proteinCal  | double | 攝取蛋白質熱量
 carbohydrateCal  | double | 攝取碳水化合物熱量
 fatCal | double | 攝取脂肪熱量
 proteinRate  | double | 攝取蛋白質比率(%)
 carbohydrateRate  | double | 攝取碳水化合物比率(%)
 fatRate | double | 攝取脂肪比率(%)
 isAdjust | boolean | 飲食記錄是否有調整過, true表示有調整過, 請直接使用調整後的相關欄位數值
 adjustTotalCalorie  | double | 調整後攝取總熱量
 adjustProtein  | double | 調整後攝取蛋白質(g)
 adjustCarbohydrate  | double | 調整後攝取碳水化合物(g)
 adjustFat | double | 調整後攝取脂肪(g)
 adjustProteinCal  | double | 調整後攝取蛋白質熱量
 adjustCarbohydrateCal  | double | 調整後攝取碳水化合物熱量
 adjustFatCal | double | 調整後攝取脂肪熱量
 adjustProteinRate  | double | 調整後攝取蛋白質比率(%)
 adjustCarbohydrateRate  | double | 調整後攝取碳水化合物比率(%)
 adjustFatRate | double | 調整後攝取脂肪比率(%)

```javascript
{
    "httpCode": 200,
    "result": {
        "data": {
            "recordDays": 12,
            "avgScore": 2.28,
            "scoreDelta": -5.42,
            "trendSummaryInfo": {
                "totalCalorie": 82.28,
                "protein": 3.92,
                "carbohydrate": 7.77,
                "fat": 3.95,
                "proteinCal": 15.66,
                "carbohydrateCal": 31.08,
                "fatCal": 35.58,
                "proteinRate": 19,
                "carbohydrateRate": 38,
                "fatRate": 43,
                "isAdjust": true,
                "adjustTotalCalorie": 118.38,
                "adjustProtein": 6.11,
                "adjustCarbohydrate": 11.14,
                "adjustFat": 5.49,
                "adjustProteinCal": 24.43,
                "adjustCarbohydrateCal": 44.57,
                "adjustFatCal": 49.43,
                "adjustProteinRate": 21,
                "adjustCarbohydrateRate": 38,
                "adjustFatRate": 42,
                "score": 3.42
            },
            "detailList": [
                {
                    "dietDate": 1675180800000,
                    "totalCalorie": 16,
                    "protein": 0.61,
                    "carbohydrate": 1.25,
                    "fat": 0.95,
                    "proteinCal": 2.43,
                    "carbohydrateCal": 5,
                    "fatCal": 8.58,
                    "proteinRate": 15,
                    "carbohydrateRate": 31,
                    "fatRate": 54,
                    "isAdjust": false,
                    "adjustTotalCalorie": 16,
                    "adjustProtein": 0.61,
                    "adjustCarbohydrate": 1.25,
                    "adjustFat": 0.95,
                    "adjustProteinCal": 2.43,
                    "adjustCarbohydrateCal": 5,
                    "adjustFatCal": 8.58,
                    "adjustProteinRate": 15,
                    "adjustCarbohydrateRate": 31,
                    "adjustFatRate": 54,
                    "score": 0.71
                },
                {
                    "dietDate": 1669824000000,
                    "totalCalorie": 148.56,
                    "protein": 7.22,
                    "carbohydrate": 14.29,
                    "fat": 6.95,
                    "proteinCal": 28.88,
                    "carbohydrateCal": 57.16,
                    "fatCal": 62.58,
                    "proteinRate": 19,
                    "carbohydrateRate": 38,
                    "fatRate": 42,
                    "isAdjust": true,
                    "adjustTotalCalorie": 220.75,
                    "adjustProtein": 11.61,
                    "adjustCarbohydrate": 21.03,
                    "adjustFat": 10.03,
                    "adjustProteinCal": 46.43,
                    "adjustCarbohydrateCal": 84.13,
                    "adjustFatCal": 90.28,
                    "adjustProteinRate": 21,
                    "adjustCarbohydrateRate": 38,
                    "adjustFatRate": 41,
                    "score": 6.13
                }
            ]
        }
    }
}
```