123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829 |
- <?php
- namespace app\controller;
- use app\Request;
- //include './Sample.php';
- class Baidu extends CommonTwoController
- {
- public function ocr(Request $request)
- {
- $file = $request->file('file');
- if ($file->getSize() > (4 * 1024 * 1024)) {
- return $this->_json_error('文件大小超过限制');
- //$this->error(1, '文件大小超过限制');
- }
- $rtn = (new Sample())->run($file->getRealPath());
- $content = json_decode($rtn, true);
- $items = $content['words_result'];
- // var_dump($items);exit;
- $result = [];
- $serCodes = [];
- foreach ($items['Item'] as $key => $val) {
- //0参考区间
- //1单位
- //2参考区间
- //4 结果
- //6代号
- //7名称
- if (stripos($val[2]['word'], '--') !== false) {
- $fanwei = explode('--', $val[2]['word']);
- } else {
- $fanwei = explode('-', $val[2]['word']);
- }
- if (!isset($fanwei[1]) || in_array($val[7]['word'], ['超敏肌钙蛋白I'])) {
- continue;
- }
- if (stripos($val[7]['word'], ')') !== false) {
- preg_match('/\((.*?)\)/', $val[7]['word'], $matches);
- if (!isset($matches[1])) {
- continue;
- }
- $val[6]['word'] = $matches[1];
- }
- if (!empty($val[4]['word']) && !empty($val[7]['word']) && empty($val[6]['word'])) {
- $val[6]['word'] = $this->getCode($val[7]['word'], $serCodes);
- $serCodes[] = $val[6]['word'];
- }
- // var_dump($val[6]['word'], $val[7]['word'], $val[4]['word']);
- // var_dump('-------------');
- $fanwei = $this->fanwei($val[6]['word'], $val[7]['word'], $val[4]['word'], $fanwei);
- if (empty($fanwei)) {
- continue;
- }
- $result[] = $fanwei;
- //exit;
- }
- $qingxu = $this->jisuan($result);
- $absQx = [];
- if (empty($qingxu)) {
- return $this->_json_succ('success');
- //return $this->success();
- }
- foreach ($qingxu as $qxK => $qxV) {
- $absQx[$qxK] = abs($qxV);
- }
- arsort($absQx);
- $maxValues = array_slice($absQx, 0, 2);
- $sortData = [];
- foreach ($maxValues as $keys => $vals) {
- $sortData[] = [$keys, $vals];
- }
- if (count($sortData) == 2) {
- $one = $sortData[0];
- $two = $sortData[1];
- if ($one[1] > $two[1]) {
- $data[] = $sortData[0];
- } elseif ($one[1] == $two[1]) {
- $data = $sortData;
- } else {
- $data[] = $sortData[1];
- }
- } else {
- $data = $sortData;
- }
- return $this->_json_succ($data);
- //return $this->success($data);
- }
- public function fanwei($xmdm, $name, $jieguo, $fanwei)
- {
- $average = ($fanwei[1] - $fanwei[0]) / 5;
- $averageArr = [];
- $levels = [3, 2, 1, 0, -1, -2, -3];
- $averageArr[0] = ['max' => $fanwei[1], 'level' => 3];
- for ($i = 1; $i <= 5; $i++) {
- if ($i == 1) {
- $max = $fanwei[1];
- $min = number_format($fanwei[1] - $average * $i, 1);
- } else {
- $max = number_format($fanwei[1] - $average * ($i - 1), 1);
- $min = number_format($fanwei[1] - $average * $i, 1);
- }
- $averageArr[$i] = ['max' => $max, 'min' => $min, 'level' => $levels[$i]];
- }
- array_push($averageArr, ['max' => $fanwei[0], 'level' => -3]);
- //var_dump($name, $averageArr);
- $rangeArr = [
- //1. 身体元素
- //铁
- 'fe' => ['3' => ['焦虑(中)'], '2' => ['焦虑(中)'], '1' => ['焦虑(轻)'], '-1' => ['抑郁(轻)', '愤怒(轻)'], '-2' => ['抑郁(中)'], '-3' => ['抑郁(中)']],
- //钙
- 'ca' => ['3' => ['焦虑(中)', '抑郁(中)'], '2' => ['焦虑(中)', '抑郁(中)'], '1' => ['焦虑(轻)', '抑郁(轻)'], '-1' => ['焦虑(轻)', '愤怒(轻)'], '-2' => ['焦虑(中)', '易激惹(中)'], '-3' => ['焦虑(中)', '易激惹(中)']],
- //镁
- 'mg' => ['-2' => ['焦虑(中)', '易怒(中)', '抑郁(中)'], '-3' => ['焦虑(中)', '易怒(中)', '抑郁(中)']],
- //钾
- 'k' => ['3' => ['愤怒(中)'], '2' => ['愤怒(中)'], '-2' => ['抑郁(中)'], '-3' => ['抑郁(中)']],
- //钠
- 'na' => ['3' => ['愤怒(中)'], '2' => ['愤怒(中)'], '-2' => ['抑郁(中)'], '-3' => ['抑郁(中)']],
- //氯
- 'c1' => ['3' => ['愤怒(中)', '恐惧(中)'], '2' => ['愤怒(中)', '恐惧(中)'], '1' => ['愤怒(轻)', '恐惧(轻)'], '-1' => ['抑郁(轻)', '焦虑(轻)'], '-2' => ['抑郁(中)', '焦虑(中)'], '-3' => ['抑郁(中)', '焦虑(中)']],
- //2. 心肝肾代谢
- //丙氨酸转氨酶(谷丙)
- 'alt' => ['3' => ['愤怒)中)', '恐惧(中)'], '2' => ['愤怒(中)', '恐惧(中)'], '1' => ['愤怒(轻)', '恐惧(轻)'], '-1' => ['焦虑(轻)'], '-2' => ['抑郁(中)', '焦虑(中)'], '-3' => ['抑郁(中)']],
- //天门冬氨酸氨基转移酶(谷草)
- 'ast' => ['3' => ['愤怒)中)', '恐惧(中)'], '2' => ['愤怒(中)', '恐惧(中)'], '1' => ['愤怒(轻)', '恐惧(轻)'], '-1' => ['焦虑(轻)'], '-2' => ['抑郁(中)', '焦虑(中)'], '-3' => ['抑郁(中)']],
- //碱性磷酸酶
- 'alp' => ['3' => ['愤怒)中)', '恐惧(中)'], '2' => ['愤怒(中)', '恐惧(中)'], '1' => ['愤怒(轻)', '恐惧(轻)'], '-1' => ['焦虑(轻)'], '-2' => ['抑郁(中)', '焦虑(中)'], '-3' => ['抑郁(中)']],
- //γ-谷氨酰基转移酶
- 'ggt' => ['3' => ['愤怒)中)', '恐惧(中)'], '2' => ['愤怒(中)', '恐惧(中)'], '1' => ['愤怒(轻)', '恐惧(轻)'], '-1' => ['焦虑(轻)'], '-2' => ['抑郁(中)', '焦虑(中)'], '-3' => ['抑郁(中)']],
- //胆碱酯酶
- 'che' => ['3' => ['愤怒)中)', '恐惧(中)'], '2' => ['愤怒(中)', '恐惧(中)'], '1' => ['愤怒(轻)', '恐惧(轻)'], '-1' => ['焦虑(轻)'], '-2' => ['抑郁(中)', '焦虑(中)'], '-3' => ['抑郁(中)']],
- //3. 胆功代谢
- //总胆红素
- 'tbil' => ['3' => ['愤怒(中)', '抑郁(中)'], '2' => ['愤怒(中)', '抑郁(中)'], '-1' => ['焦虑(轻)'], '-2' => ['抑郁(中)'], '-3' => ['抑郁(中)']],
- //直接胆红素
- 'dbil' => ['3' => ['愤怒(中)', '抑郁(中)', '焦虑)中)'], '2' => ['愤怒(中)', '抑郁(中)', '焦虑(中)'], '1' => ['愤怒)轻)', '抑郁(轻)', '焦虑)轻)'], '-1' => ['焦虑(轻)'], '-2' => ['抑郁(中)']],
- //间接胆红素
- 'ibil' => ['3' => ['抑郁(中)', '焦虑)中)'], '2' => ['抑郁(中)', '焦虑(中)'], '1' => ['抑郁(轻)', '焦虑(轻)'], '-1' => ['焦虑(轻)'], '-2' => ['抑郁(中)'], '-3' => ['抑郁(中)']],
- //4. 糖、脂肪、蛋白质代谢
- //同型半胱氨酸
- 'hcy' => ['3' => ['焦虑(中)', '抑郁(中)'], '2' => ['焦虑(中)', '抑郁(中)'], '1' => ['焦虑(轻)', '抑郁(轻)'], '-2' => ['抑郁(中)'], '-3' => ['抑郁(中)']],
- //葡萄糖
- 'glu' => ['3' => ['愤怒(中)', '抑郁(中)', '焦虑(中)'], '2' => ['恐惧(中)', '委屈(轻)', '抑郁(轻)', '焦虑(轻)'], '-2' => ['抑郁(中)'], '-3' => ['抑郁(中)']],
- //总胆汁酸
- 'tba' => ['3' => ['焦虑(中)'], '2' => ['焦虑(中)'], '-1' => ['焦虑(轻)'], '-2' => ['抑郁(中)', '愤怒(中)'], '-3' => ['抑郁(中)', '愤怒(中)']],
- //甘油三酯
- 'tg' => ['3' => ['焦虑(中)', '抑郁(中)'], '2' => ['焦虑(中)', '抑郁(中)'], '1' => ['焦虑(轻)'], '-2' => ['抑郁(中)']],
- //总胆固醇
- 'chol' => ['3' => ['愤怒(中)', '抑郁(中)', '焦虑(中)', '恐惧(中)'], '2' => ['愤怒(中)', '抑郁(中)', '焦虑(中)', '恐惧(中)'], '1' => ['愤怒(轻)', '抑郁(轻)', '焦虑(轻)', '恐惧(轻)'], '-1' => ['焦虑(轻)', '抑郁(轻)'], '-2' => ['焦虑(中)', '抑郁(中)'], '-3' => ['焦虑(中)', '抑郁(中)']],
- //高密度脂蛋白
- 'hdl' => ['3' => ['愤怒(中)', '焦虑(中)'], '2' => ['愤怒(中)', '焦虑(中)'], '1' => ['抑郁(轻)', '焦虑(轻)'], '-1' => ['愤怒(轻)', '焦虑(轻)'], '-2' => ['愤怒(中)', '焦虑(中)'], '-3' => ['愤怒(中)', '焦虑(中)']],
- //低密度脂蛋白
- 'ldl' => ['3' => ['抑郁(中)', '焦虑(中)'], '2' => ['抑郁(中)', '焦虑(中)'], '1' => ['抑郁(轻)', '焦虑(轻)'], '-1' => ['愤怒(轻)', '焦虑(轻)'], '-2' => ['愤怒(中)', '焦虑(中)'], '-3' => ['愤怒(中)', '焦虑(中)']],
- //小而密低密度脂蛋白
- 'sdldl' => ['3' => ['抑郁(中)', '焦虑(中)'], '2' => ['抑郁(中)', '焦虑(中)'], '1' => ['抑郁(轻)', '焦虑(轻)'], '-1' => ['愤怒(轻)', '焦虑(轻)'], '-2' => ['愤怒(中)', '焦虑(中)'], '-3' => ['愤怒(中)', '焦虑(中)']],
- //载脂蛋白A1
- 'apoa1' => ['3' => ['抑郁(中)', '焦虑(中)'], '2' => ['抑郁(中)', '焦虑(中)'], '1' => ['抑郁(轻)', '焦虑(轻)'], '-1' => ['愤怒(轻)', '焦虑(轻)'], '-2' => ['愤怒(中)', '焦虑(中)'], '-3' => ['愤怒(中)', '焦虑(中)']],
- //载脂蛋白B
- 'apob' => ['3' => ['焦虑(中)', '抑郁(中)'], '2' => ['焦虑(中)', '抑郁(中)'], '1' => ['焦虑(轻)', '抑郁(轻)']],
- //尿酸
- 'uric' => ['3' => ['焦虑(中)', '恐惧(中)'], '2' => ['焦虑(中)', '恐惧(中)'], '1' => ['焦虑(轻)']],
- // '尿素' => [],
- //5. 免疫
- //总蛋白
- 'tp' => ['3' => ['愤怒(中)'], '2' => ['愤怒(中)'], '-2' => ['焦虑(中)', '恐惧(中)'], '-3' => ['焦虑(中)', '恐惧(中)']],
- //白蛋白
- 'alb' => ['3' => ['愤怒(中)'], '2' => ['愤怒(中)'], '1' => ['焦虑(轻)'], '-1' => ['焦虑(轻)'], '-2' => ['焦虑(中)', '恐惧(中)'], '-3' => ['焦虑(中)', '恐惧(中)']],
- //球蛋白
- 'glb' => ['3' => ['焦虑(中)', '恐惧(中)'], '2' => ['恐惧(中)', '焦虑(中)'], '1' => ['焦虑(轻)'], '-1' => ['焦虑(轻)'], '-2' => ['焦虑(中)', '恐惧(中)'], '-3' => ['焦虑(中)', '恐惧(中)']],
- //白(中)球蛋白比值
- 'a:g' => ['3' => ['愤怒(中)', '易怒(中)'], '2' => ['愤怒(中)', '易怒(中)'], '1' => ['焦虑(轻)'], '-1' => ['焦虑(中)'], '-2' => ['抑郁(中)'], '-3' => ['抑郁(中)']],
- //6. 肌肉代谢
- //肌酐
- 'crea' => ['3' => ['愤怒(中)'], '2' => ['愤怒(中)'], '-2' => ['焦虑(中)', '恐惧(中)'], '-3' => ['焦虑(中)', '恐惧(中)']],
- //肌酸激酶
- 'ck' => ['3' => ['愤怒(中)'], '2' => ['愤怒(中)'], '1' => ['焦虑(轻)'], '-1' => ['焦虑(轻)'], '-2' => ['焦虑(中)', '恐惧(中)'], '-3' => ['焦虑(中)', '恐惧(中)']],
- //肌酸激酶同工酶
- 'ckmb' => ['3' => ['焦虑(中)', '恐惧(中)'], '2' => ['恐惧(中)', '焦虑(中)'], '1' => ['焦虑(轻)'], '-1' => ['焦虑(轻)'], '-2' => ['抑郁(中)'], '-3' => ['抑郁(中)']],
- //乳酸脱氢酶
- 'ldh' => ['3' => ['焦虑(中)', '恐惧(中)'], '2' => ['恐惧(中)', '焦虑(中)'], '1' => ['焦虑(轻)'], '-1' => ['焦虑(轻)'], '-2' => ['抑郁(中)'], '-3' => ['抑郁(中)']],
- //7. 血常规免疫
- //白细胞
- 'wbc' => ['3' => ['抑郁(中)', '恐惧(中)'], '2' => ['抑郁(中)', '恐惧(中)'], '1' => ['焦虑(轻)', '恐惧(轻)'], '-1' => ['焦虑(轻)', '抑郁(轻)'], '-2' => ['抑郁(中)'], '-3' => ['抑郁(中)']],
- //中性粒细胞
- 'meut' => ['3' => ['愤怒(中)', '恐惧(中)', '焦虑(中)'], '2' => ['愤怒(中)', '恐惧(中)', '焦虑(中)'], '1' => ['愤怒(轻)', '焦虑(轻)', '恐惧(轻)'], '-1' => ['焦虑(轻)', '抑郁(轻)'], '-2' => ['抑郁(中)', '焦虑(中)'], '-3' => ['抑郁(中)', '焦虑(中)']],
- 'meut%' => ['3' => ['愤怒(中)', '恐惧(中)', '焦虑(中)'], '2' => ['愤怒(中)', '恐惧(中)', '焦虑(中)'], '1' => ['愤怒(轻)', '焦虑(轻)', '恐惧(轻)'], '-1' => ['焦虑(轻)', '抑郁(轻)'], '-2' => ['抑郁(中)', '焦虑(中)'], '-3' => ['抑郁(中)', '焦虑(中)']],
- //淋巴细胞
- 'lymph' => ['3' => ['焦虑(中)', '愤怒(中)'], '2' => ['焦虑(中)', '愤怒(中)'], '1' => ['焦虑(轻)', '愤怒(轻)'], '-1' => ['愤怒(轻)', '抑郁(轻)'], '-2' => ['抑郁(中)'], '-3' => ['抑郁(中)']],
- //单核细胞
- 'monocytes' => ['3' => ['焦虑(中)', '抑郁(中)'], '2' => ['焦虑(中)', '抑郁(中)'], '1' => ['焦虑(轻)', '抑郁(轻)'], '-1' => ['焦虑(轻)'], '-2' => ['抑郁(中)'], '-3' => ['抑郁(中)']],
- //嗜酸粒细胞
- 'eos' => ['3' => ['焦虑(中)', '恐惧(中)'], '2' => ['恐惧(中)', '焦虑(中)'], '1' => ['焦虑(轻)', '恐惧(轻)'], '-1' => ['焦虑(轻)', '抑郁(轻)']], '-2' => ['抑郁(中)', '焦虑(中)'], '-3' => ['抑郁(中)', '焦虑(中)'],
- //嗜碱性粒细胞
- 'basophil' => ['3' => ['愤怒(中)', '焦虑(中)', '恐惧(中)'], '2' => ['愤怒(中)', '恐惧(中)', '焦虑(中)'], '1' => ['焦虑(轻)', '恐惧(轻)'], '-1' => ['焦虑(轻)'], '-2' => ['抑郁(中)', '焦虑(中)']],
- //8. 贫血
- //红细胞
- 'rbc' => ['3' => ['愤怒(中)'], '2' => ['愤怒(中)'], '-1' => ['抑郁(轻)'], '-2' => ['抑郁(中)'], '-3' => ['抑郁(中)']],
- //血红蛋白
- 'hgb' => ['3' => ['愤怒(中)', '恐惧(中)', '焦虑(中)'], '2' => ['愤怒(中)', '恐惧(中)', '焦虑(中)'], '1' => ['愤怒(轻)', '焦虑(轻)'], '-1' => ['抑郁(轻)'], '-2' => ['抑郁(中)'], '-3' => ['抑郁(中)']],
- '红细胞比容/红细胞压积' => ['3' => ['愤怒(中)', '恐惧(中)'], '2' => ['愤怒(中)', '恐惧(中)'], '1' => ['愤怒(轻)', '焦虑(轻)'], '-1' => ['焦虑(轻)', '抑郁(轻)'], '-2' => ['抑郁(中)'], '-3' => ['抑郁(中)']],
- //红细胞平均体积
- 'mcv' => ['3' => ['焦虑(中)', '抑郁(中)'], '2' => ['焦虑(中)', '抑郁(中)'], '1' => ['焦虑(轻)', '抑郁(轻)'], '-1' => ['焦虑(轻)'], '-2' => ['抑郁(中)', '焦虑(中)'], '-3' => ['抑郁(中)', '焦虑(中)']],
- //平均血红蛋白含量
- 'mch' => ['3' => ['抑郁(中)'], '2' => ['抑郁(中)'], '1' => ['焦虑(轻)', '抑郁(轻)'], '-1' => ['焦虑(轻)', '抑郁(轻)'], '-2' => ['抑郁(中)', '焦虑(中)'], '-3' => ['抑郁(中)', '焦虑(中)']],
- //平均血红蛋白浓度
- 'mchc' => ['3' => ['愤怒(中)', '恐惧(中)'], '2' => ['愤怒(中)', '恐惧(中)', '焦虑(中)'], '1' => ['焦虑(轻)', '恐惧(轻)'], '-1' => ['焦虑(轻)', '抑郁(轻)']], '-2' => ['抑郁(中)', '焦虑(中)'], '-3' => ['抑郁(中)', '焦虑(中)'],
- //红细胞分布宽度
- 'rdw-cv' => ['3' => ['抑郁(中)'], '2' => ['抑郁(中)', '焦虑(中)'], '1' => ['焦虑(轻)', '抑郁(轻)'], '-1' => ['焦虑(轻)'], '-2' => ['抑郁(中)', '焦虑(中)'], '-3' => ['抑郁(中)']],
- //血小板
- 'plt' => ['3' => ['焦虑(中)', '愤怒(中)', '抑郁(中)'], '2' => ['抑郁(中)'], '1' => ['焦虑(轻)', '愤怒(轻)'], '-1' => ['愤怒(轻)', '抑郁(轻)'], '-2' => ['抑郁(中)'], '-3' => ['抑郁(中)']],
- //平均血小板体积
- 'mpv' => ['3' => ['焦虑(中)', '抑郁(中)'], '2' => ['焦虑(中)', '抑郁(中)'], '1' => ['焦虑(轻)', '抑郁(轻)'], '-1' => ['焦虑(轻)'], '-2' => ['抑郁(中)', '焦虑(中)'], '-3' => ['抑郁(中)']],
- //血小板体积分布宽度
- 'pdw' => ['3' => ['抑郁(中)'], '2' => ['抑郁(中)'], '1' => ['焦虑(轻)', '恐惧(轻)']],
- //血小板压积
- 'pct' => ['3' => ['抑郁(中)'], '2' => ['抑郁(中)', '焦虑(中)'], '1' => ['焦虑(轻)', '恐惧(轻)'], '-1' => ['焦虑(轻)'], '-2' => ['抑郁(中)', '焦虑(中)'], '-3' => ['抑郁(中)']],
- ];
- $reslut = [];
- $xmdm = strtolower($xmdm);
- if (!isset($rangeArr[$xmdm])) {
- return $reslut;
- }
- $ra = $rangeArr[$xmdm];
- //范围
- foreach ($averageArr as $akey => $aval) {
- if ($jieguo > $averageArr[0]['max']) {
- //var_dump($averageArr[0]['level'], $ra[$averageArr[0]['level']]);
- if (!isset($ra[$averageArr[0]['level']])) {
- break;
- }
- $reslut[$xmdm] = ['name' => $name] + ['status' => $ra[$averageArr[0]['level']]] + ['level' => 3] + ['result' => $jieguo] + ['reference' => $fanwei[1] . '-' . $fanwei[0]] + ['range' => json_encode($averageArr)];
- break;
- } elseif (isset($aval['min']) && $jieguo > $aval['min'] && $jieguo < $aval['max']) {
- if (!isset($ra[$aval['level']])) {
- break;
- }
- $reslut[$xmdm] = ['name' => $name] + ['status' => $ra[$aval['level']]] + ['level' => $aval['level']] + ['result' => $jieguo] + ['reference' => $fanwei[1] . '-' . $fanwei[0]] + ['range' => json_encode($averageArr)];
- break;
- } elseif ($jieguo < $averageArr[6]['max']) {
- //var_dump($name, $averageArr[6]['level']);
- if (!isset($ra[$averageArr[6]['level']])) {
- break;
- }
- $reslut[$xmdm] = ['name' => $name] + ['status' => $ra[$averageArr[6]['level']]] + ['level' => -3] + ['result' => $jieguo] + ['reference' => $fanwei[1] . '-' . $fanwei[0]] + ['range' => json_encode($averageArr)];
- break;
- }
- }
- //var_dump($name, $jieguo, $reslut);exit;
- return $reslut;
- }
- public function jisuan($data)
- {
- //身体元素 钾钠氯铁钙镁
- $shenti = ['k', 'na', 'c1', 'fe', 'ca', 'mg'];
- // $fe = ['-2' => -2 * 99, '-3' => -3 * 99];
- // $na = ['-3' => -3 * 99];
- $re = [];
- $xiangmuArr = [];
- $shentiRes = [];
- foreach ($data as $key => $item) {
- foreach ($item as $dm => $val) {
- if (in_array($dm, $shenti)) {
- if ($dm == 'fe') {
- if ($val['level'] == -2) {
- $val['level'] = -2 * 99;
- }
- if ($val['level'] == -3) {
- $val['level'] = -3 * 99;
- }
- }
- if ($dm == 'na') {
- if ($val['level'] == -3) {
- $val['level'] = -3 * 99;
- }
- }
- //var_dump($val['status'], $dm);
- foreach ($val['status'] as $sts) {
- if (!isset($shentiRes[$sts])) {
- $shentiRes[$sts] = $val['level'];
- } else {
- $shentiRes[$sts] += $val['level'];
- }
- }
- }
- $xiangmuArr[$dm] = $val;
- }
- }
- $re['shenti'] = $shentiRes;
- //【肝】 γ-谷氨酰基转移酶 --ggt
- $ganVal = [];
- $gxsRes = [];
- if (isset($xiangmuArr['ggt'])) {
- $ganFanWeiArr = ['3' => ['愤怒(中)'], '2' => ['愤怒(中)'], '1' => ['愤怒(轻)'], '-1' => ['焦虑(轻)'], '-2' => ['抑郁(中)', '焦虑(中)'], '-3' => ['抑郁(中)']];
- if (isset($ganFanWeiArr[$xiangmuArr['ggt']['level']])) {
- $ganVal = ['status' => $ganFanWeiArr[$xiangmuArr['ggt']['level']], 'val' => $xiangmuArr['ggt']['level']];
- foreach ($ganFanWeiArr[$xiangmuArr['ggt']['level']] as $gan) {
- if (!isset($gxsRes[$gan])) {
- $gxsRes[$gan] = $xiangmuArr['ggt']['level'];
- } else {
- $gxsRes[$gan] += $xiangmuArr['ggt']['level'];
- }
- }
- }
- }
- //【心】[丙氨基转移酶alt]*2-[γ-谷氨酰基转移酶ggt]=[心]
- $xinVal = [];
- if (isset($xiangmuArr['alt']) && isset($xiangmuArr['ggt'])) {
- $xinDiff = $xiangmuArr['alt']['level'] * 2 - $xiangmuArr['ggt']['level'] * 1;
- $xinFanWeiArr = ['6~9' => ['愤怒(中)', '恐惧(中)'], '3~5' => ['愤怒(中)', '恐惧(中)'], '1~2' => ['愤怒(轻)', '恐惧(轻)', '焦虑(轻)'], '-2~-1' => ['焦虑(轻)'], '-5~-3' => ['抑郁(中)', '焦虑(中)'], '-9~-6' => ['抑郁(中)']];
- foreach ($xinFanWeiArr as $xinKey => $xStatus) {
- $xnum = explode('~', $xinKey);
- if ($xinDiff > $xnum[0] && $xinDiff < $xnum[1]) {
- $xinVal = ['status' => $xStatus, 'val' => $xinDiff];
- foreach ($xStatus as $xin) {
- if (!isset($gxsRes[$xin])) {
- $gxsRes[$xin] = $xinDiff;
- } else {
- $gxsRes[$xin] += $xinDiff;
- }
- }
- }
- }
- }
- //【肾】[丙氨基转移酶]*3-[天门冬氨酸氨基转移酶]*2 --ast
- $shenVal = [];
- if (isset($xiangmuArr['alt']) && isset($xiangmuArr['ast'])) {
- $shenDiff = $xiangmuArr['alt']['level'] * 3 - $xiangmuArr['ast']['level'] * 1;
- $shenFanWeiArr = ['10~15' => ['愤怒(中)', '恐惧(中)'], '5~9' => ['愤怒(中)', '恐惧(中)', '焦虑(中)'], '1~4' => ['焦虑(轻)'], '-4~-1' => ['焦虑(轻)'], '-9~-5' => ['抑郁(中)', '焦虑(中)'], '-15~-10' => ['抑郁(中)', '焦虑(中)']];
- foreach ($shenFanWeiArr as $senKey => $senStatus) {
- $sennum = explode('~', $senKey);
- if ($shenDiff > $sennum[0] && $shenDiff < $sennum[1]) {
- $shenVal = ['status' => $senStatus, 'val' => $shenDiff];
- foreach ($senStatus as $sen) {
- if (!isset($gxsRes[$sen])) {
- $gxsRes[$sen] = $shenDiff;
- } else {
- $gxsRes[$sen] += $shenDiff;
- }
- }
- }
- }
- }
- //var_dump($ganVal,$xinVal,$shenVal);
- $re['xgs'] = $gxsRes;
- //3. 胆功代谢
- $zjdhs = [];//直接、间接胆红素
- $dhsjl = [];//胆红素结论
- if (isset($xiangmuArr['dbil']) && isset($xiangmuArr['ibil'])) {
- $dbilArr = [];
- $ibilArr = [];
- $dbVal = 0;
- $ibVal = 0;
- foreach ($xiangmuArr['dbil']['status'] as $dbil) {
- $dbVal += $xiangmuArr['dbil']['level'];
- if (isset($dbilArr[$dbil])) {
- $dbilArr[$dbil] += $xiangmuArr['dbil']['level'];
- } else {
- $dbilArr[$dbil] = $xiangmuArr['dbil']['level'];
- }
- }
- foreach ($xiangmuArr['ibil']['status'] as $ibil) {
- $ibVal += $xiangmuArr['ibil']['level'];
- if (isset($ibilArr[$ibil])) {
- $ibilArr[$ibil] += $xiangmuArr['ibil']['level'];
- } else {
- $ibilArr[$ibil] = $xiangmuArr['ibil']['level'];
- }
- }
- if (abs($dbVal) > abs($ibVal)) {
- $zjdhs = $dbilArr;
- } else {
- $zjdhs = $ibilArr;
- }
- //$re['dan'] = ['0' => $zjdhs];
- }
- if (isset($xiangmuArr['tbil']) && !empty($zjdhs)) {
- foreach ($xiangmuArr['tbil']['status'] as $tbil) {
- if (isset($dhsjl[$tbil])) {
- $dhsjl[$tbil] += $xiangmuArr['tbil']['level'];
- } else {
- $dhsjl[$tbil] = $xiangmuArr['tbil']['level'];
- }
- }
- foreach ($zjdhs as $zjdhKey => $zjdhVal) {
- if (isset($dhsjl[$zjdhKey])) {
- $dhsjl[$zjdhKey] += $zjdhVal;
- } else {
- $dhsjl[$zjdhKey] = $zjdhVal;
- }
- }
- }
- $re['dan'] = $dhsjl;
- //4. 糖、脂肪、蛋白质代谢
- //[同型半胱氨酸]+[葡萄糖]+[总胆汁酸]+[甘油三酯]+[总胆固醇]+[高密度脂蛋白]+[低密度脂蛋白]+[小而密低密度脂蛋白]+[载脂蛋白A1]+[载脂蛋白bB]+[尿酸]
- $dxie = ['hcy', 'glu', 'tba', 'tg', 'chol', 'hdl', 'hdl', 'ldl', 'sdldl', 'uric'];
- $dxieRes = [];
- foreach ($data as $key => $item) {
- foreach ($item as $dm => $val) {
- if (in_array($dm, $dxie)) {
- foreach ($val['status'] as $sts) {
- if (!isset($dxieRes[$sts])) {
- $dxieRes[$sts] = $val['level'];
- } else {
- $dxieRes[$sts] += $val['level'];
- }
- }
- }
- }
- }
- $re['daixie'] = $dxieRes;
- //5. 免疫
- //[总蛋白tp]+[白蛋白alb]+[球蛋白glb]+[白(中)][球蛋白比值a:g]
- $mianyiRes = [];
- $baiQiuArr = [];
- $qiuDanBaiArr = [];
- $qiuMaxArr = [];
- $albVal = 0;
- $glbVal = 0;
- if (isset($xiangmuArr['alb']) && isset($xiangmuArr['glb'])) {
- foreach ($xiangmuArr['alb']['status'] as $sts) {
- $albVal += $xiangmuArr['alb']['level'];
- if (isset($baiQiuArr[$sts])) {
- $baiQiuArr[$sts] += $xiangmuArr['alb']['level'];
- } else {
- $baiQiuArr[$sts] = $xiangmuArr['alb']['level'];
- }
- }
- foreach ($xiangmuArr['glb']['status'] as $sts) {
- $glbVal += $xiangmuArr['glb']['level'];
- if (isset($qiuDanBaiArr[$sts])) {
- $qiuDanBaiArr[$sts] += $xiangmuArr['glb']['level'];
- } else {
- $qiuDanBaiArr[$sts] = $xiangmuArr['glb']['level'];
- }
- }
- if (abs($albVal) > abs($glbVal)) {
- $qiuMaxArr = $baiQiuArr;
- } else {
- $qiuMaxArr = $qiuDanBaiArr;
- }
- }
- if (isset($xiangmuArr['tp']) && isset($xiangmuArr['a:g']) && !empty($biZhiArr)) {
- foreach ($xiangmuArr['tp']['status'] as $tpSts) {
- if (isset($mianyiRes[$tpSts])) {
- $mianyiRes[$tpSts] += $xiangmuArr['tp']['level'];
- } else {
- $mianyiRes[$tpSts] = $xiangmuArr['tp']['level'];
- }
- }
- foreach ($xiangmuArr['a:g']['status'] as $agSts) {
- if (isset($mianyiRes[$agSts])) {
- $mianyiRes[$agSts] += $xiangmuArr['a:g']['level'];
- } else {
- $mianyiRes[$agSts] = $xiangmuArr['a:g']['level'];
- }
- }
- foreach ($qiuMaxArr as $maxKey => $maxVal) {
- if (isset($mianyiRes[$maxKey])) {
- $mianyiRes[$maxKey] += $maxVal;
- } else {
- $mianyiRes[$maxKey] = $maxVal;
- }
- }
- }
- $re['mianyi'] = $mianyiRes;
- //6. 肌肉代谢
- //[肌酐][肌酸激酶][肌酸激酶同工酶][乳酸脱氢酶]
- $jirouDxie = ['crea', 'ckmb', 'ckmb', 'ldh'];
- $jrdxieRes = [];
- foreach ($data as $key => $item) {
- foreach ($item as $dm => $val) {
- if (in_array($dm, $jirouDxie)) {
- foreach ($val['status'] as $sts) {
- if (!isset($jrdxieRes[$sts])) {
- $jrdxieRes[$sts] = $val['level'];
- } else {
- $jrdxieRes[$sts] += $val['level'];
- }
- }
- }
- }
- }
- $re['jiroudx'] = $jrdxieRes;
- //7. 血常规免疫
- //[白细胞][中性粒细胞][中性粒细胞百分比][淋巴细胞][单核细胞][嗜酸粒细胞][嗜碱性粒细胞]
- $xue = ['wbc', 'meut', 'lymph', 'lymph', 'monocytes', 'eos', 'basophil'];
- $xueRes = [];
- foreach ($data as $key => $item) {
- foreach ($item as $dm => $val) {
- if (in_array($dm, $xue)) {
- foreach ($val['status'] as $sts) {
- if (!isset($xueRes[$sts])) {
- $xueRes[$sts] = $val['level'];
- } else {
- $xueRes[$sts] += $val['level'];
- }
- }
- }
- }
- }
- $re['xue'] = $xueRes;
- //8. 贫血
- //[红细胞][血红蛋白][红细胞比容/红细胞压积][红细胞平均体积][平均血红蛋白含量][平均血红蛋白浓度][红细胞分布宽度][血小板][平均血小板体积][血小板体积分布宽度][血小板压积]
- $pinXue = ['rbc', 'hgb', 'mcv', 'mch', 'mchc', 'rdw-cv', 'plt', 'mpv', 'pdw'];
- $pinXueRes = [];
- $pinXlevel = [
- 'rbc' => ['-2' => -198, '-3' => 287],
- 'hgb' => ['-2' => -198, '-3' => 287],
- 'mcv' => ['-2' => -198, '-3' => -287],
- 'rdw-cv' => ['-1' => -99, '-3' => -287],
- ];
- foreach ($data as $key => $item) {
- foreach ($item as $dm => $val) {
- if (in_array($dm, $pinXue)) {
- if (isset($pinXlevel[$dm][$val['level']])) {
- $level = $pinXlevel[$dm][$val['level']];
- } else {
- $level = $val['level'];
- }
- foreach ($val['status'] as $sts) {
- if (!isset($pinXueRes[$sts])) {
- $pinXueRes[$sts] = $level;
- } else {
- $pinXueRes[$sts] += $level;
- }
- }
- }
- }
- }
- $re['pinxue'] = $pinXueRes;
- $jieguo = [];
- foreach ($re as $rr) {
- if (!empty($rr)) {
- foreach ($rr as $st => $stVal) {
- if (isset($jieguo[$st])) {
- $jieguo[$st] += $stVal;
- } else {
- $jieguo[$st] = $stVal;
- }
- }
- }
- }
- return $jieguo;
- }
- public function getCode($name, $check)
- {
- $code = [
- 'fe' => '铁',
- //钙
- 'ca' => '钙',
- //镁
- 'mg' => '镁',
- //钾
- 'k' => '钾',
- //钠
- 'na' => '钠',
- //氯
- 'c1' => '氯',
- //2. 心肝肾代谢
- //丙氨酸转氨酶(谷丙)
- 'alt' => '丙氨酸转氨酶',
- //天门冬氨酸氨基转移酶(谷草)
- 'ast' => '天门冬氨酸氨基转移酶',
- //碱性磷酸酶
- 'alp' => '碱性磷酸酶',
- //γ-谷氨酰基转移酶
- 'ggt' => 'γ-谷氨酰基转移酶',
- //胆碱酯酶
- 'che' => '胆碱酯酶',
- //3. 胆功代谢
- //总胆红素
- 'tbil' => '总胆红素',
- //直接胆红素
- 'dbil' => '直接胆红素',
- //间接胆红素
- 'ibil' => '间接胆红素',
- //4. 糖、脂肪、蛋白质代谢
- //同型半胱氨酸
- 'hcy' => '同型半胱氨酸',
- //葡萄糖
- 'glu' => '葡萄糖',
- //总胆汁酸
- 'tba' => '总胆汁酸',
- //甘油三酯
- 'tg' => '甘油三酯',
- //总胆固醇
- 'chol' => '总胆固醇',
- //高密度脂蛋白
- 'hdl' => '高密度脂蛋白',
- //低密度脂蛋白
- 'ldl' => '低密度脂蛋白',
- //小而密低密度脂蛋白
- 'sdldl' => '小而密低密度脂蛋白',
- 'apoa1' => '载脂蛋白A1',
- 'apob' => '载脂蛋白B',
- //尿酸
- 'uric' => '尿酸',
- // '尿素' => [],
- //5. 免疫
- //总蛋白
- 'tp' => '总蛋白',
- //白蛋白
- 'alb' => '白蛋白',
- //球蛋白
- 'glb' => '球蛋白',
- //白(中)球蛋白比值
- 'a:g' => '白(中)球蛋白比值',
- //6. 肌肉代谢
- //肌酐
- 'crea' => '肌酐',
- //肌酸激酶
- 'ck' => '肌酸激酶',
- //肌酸激酶同工酶
- 'ckmb' => '肌酸激酶同工酶',
- //乳酸脱氢酶
- 'ldh' => '乳酸脱氢酶',
- //7. 血常规免疫
- //白细胞
- 'wbc' => '白细胞',
- //中性粒细胞
- 'meut' => '中性粒细胞',
- 'meut%' => '中性粒细胞百分比',
- //淋巴细胞
- 'lymph' => '淋巴细胞',
- 'monocytes' => '单核细胞',
- 'eos' => '嗜酸粒细胞',
- 'basophil' => '嗜碱性粒细胞',
- //8. 贫血
- //红细胞
- 'rbc' => '红细胞',
- //血红蛋白
- 'hgb' => '血红蛋白',
- '红细胞比容/红细胞压积' => '红细胞比容/红细胞压积',
- //红细胞平均体积
- 'mcv' => '红细胞平均体积',
- //平均血红蛋白含量
- 'mch' => '平均血红蛋白含量',
- //平均血红蛋白浓度
- 'mchc' => '平均血红蛋白浓度',
- //红细胞分布宽度
- 'rdw-cv' => '红细胞分布宽度',
- //血小板
- 'plt' => '血小板',
- //平均血小板体积
- 'mpv' => '平均血小板体积',
- //血小板体积分布宽度
- 'pdw' => '血小板体积分布宽度',
- 'pct' => '血小板压积',
- ];
- foreach ($code as $k => $v) {
- if (stripos($name, $v) !== false && !in_array($k, $check)) {
- return $k;
- }
- }
- }
- }
|