Browse Source

导出excel和csv

lighter 2 years ago
parent
commit
5a27fc6a0a

+ 1 - 0
package.json

@@ -24,6 +24,7 @@
     "echarts": "^5.2.0",
     "element-plus": "^2.2.6",
     "file-saver": "^2.0.5",
+    "iconv-lite": "^0.6.3",
     "jquery": "^3.6.0",
     "js-cookie": "^3.0.0",
     "jsbarcode": "^3.11.4",

+ 81 - 0
src/utils/ExportCVS.js

@@ -0,0 +1,81 @@
+import {ElMessage} from "element-plus";
+// const iconv = require('iconv-lite')
+import {decode,encode} from 'iconv-lite'
+
+export function exportCSV(data, field, fileName) {
+    if (!data || data.length === 0) {
+        ElMessage({
+            message: '没有可以导出的数据!',
+            type: 'warning'
+        })
+        return
+    }
+    fileName = fileName ? fileName : '导出.csv'
+    let csvContent = ''
+    let jsonColumns = []
+    for (let key in field) {
+        csvContent += field[key] + ','
+        jsonColumns.push(key)
+    }
+    csvContent = trim(csvContent, ',') + '\n'
+
+    for (let i = 0; i < data.length; i++) {
+        let row = ''
+        for (let c = 0; c < jsonColumns.length; c ++) {
+            let val = data[i][jsonColumns[c]]
+            if (val === null || val === undefined) {
+                val = ''
+            }
+            row += `${val},`
+        }
+        csvContent += trim(row, ',') + '\n'
+    }
+
+    const arrBuffer = new Int8Array(encode(csvContent, 'GBK'))
+    const blob = new Blob([arrBuffer], {
+        type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=GBK'
+    })
+
+    let link = document.createElement('a')
+    link.href = window.URL.createObjectURL(blob)
+    link.download = fileName
+    document.body.appendChild(link)
+    link.click()
+    document.body.removeChild(link)
+}
+
+function trim(str, char) {
+    if (char) {
+        str = str.replace(new RegExp('^\\' + char + '+|\\' + char + '+$', 'g'), '')
+    }
+    return str.replace(/^\s + |\s + $/g, '')
+}
+
+
+function utf8ToUnicode(utf8) {
+    // 将UTF-8格式的字节转成Unicode字符串
+    var unicode = "";
+    var i = 0;
+    while (i < utf8.length) {
+        var c = utf8.charCodeAt(i);
+        if (c < 128) {
+            unicode += String.fromCharCode(c);
+            i++;
+        } else if ((c > 191) && (c < 224)) {
+            unicode += String.fromCharCode(((c & 0x1f) << 6) | (utf8.charCodeAt(i + 1) & 0x3f));
+            i += 2;
+        } else {
+            unicode += String.fromCharCode(((c & 0x0f) << 12) | ((utf8.charCodeAt(i + 1) & 0x3f) << 6) | (utf8.charCodeAt(i + 2) & 0x3f));
+            i += 3;
+        }
+    }
+    return unicode;
+}
+
+function unicodeToGbk(str){
+    var arr = [];
+    for(var i=0; i<str.length; i++){
+        arr.push('\\u' + str.charCodeAt(i).toString(16));
+    }
+    return unescape(arr.join('').replace(/\\/g, '%'));
+}

+ 28 - 0
src/views/clinic/interactive/Comments.vue

@@ -14,6 +14,8 @@
       <el-divider direction="vertical"></el-divider>
       <el-button icon="Search" type="primary" @click="handleClickSearch" style="margin-right: 12px">检索</el-button>
       <el-checkbox v-model="inquiry.onlyValidComments" @change="handleCheckboxChange">只看有内容的评价</el-checkbox>
+      <el-divider direction="vertical"></el-divider>
+      <el-button icon="Download" type="success" @click="exportExcel">导出Excel</el-button>
     </template>
     <template #main>
       <el-table :data="comments.list" stripe :height="tableHeight" highlight-current-row>
@@ -68,6 +70,7 @@ import {getComments,updateCommentStatus} from "@/api/outpatient/comments";
 import {getDateRangeFormatDate} from "@/utils/date";
 import store from "@/store";
 import {ElMessage} from "element-plus";
+import {Export} from "@/utils/ExportExcel";
 
 const windowSize = store.state.app.windowSize
 const tableHeight = windowSize.h - 55
@@ -144,4 +147,29 @@ const changeCommentStatus = (row, deleted) => {
   })
 }
 
+const exportExcel = () => {
+  if (comments.list.length === 0) {
+    ElMessage({
+      message: '没有可以导出的数据。',
+      type: 'warning',
+      duration: 2000,
+      showClose: true
+    })
+    return
+  }
+  const fields = {
+    doctorCode: '医生编码',
+    doctorCodeRs: '医生工号',
+    doctorName: '医生姓名',
+    department: '医生科室',
+    commentLevel: '评价星级',
+    commentContent: '评价内容',
+    commentTime: '评价时间',
+    patientId: '患者ID',
+    patientName: '患者姓名',
+    patPhoneNo: '患者电话',
+  }
+  Export(comments.list, fields, '服务号患者评价')
+}
+
 </script>

+ 284 - 281
src/views/hospitalization/case-front-sheet/FrontSheetExport.vue

@@ -1,83 +1,83 @@
 <template>
-    <page-layer>
-        <template #header>
-            <el-date-picker v-model="month" :clearable="false" placeholder="出院日期" style="width: 110px"
-                            type="month"></el-date-picker>
-            <el-divider direction="vertical"></el-divider>
-            <el-button type="primary" icon="Search" @click="getAnalyzedSheets">检索</el-button>
-            <el-button type="primary" icon="Download" @click="exportExcel">导出Excel</el-button>
-        </template>
-        <template #main>
-            <el-table :height="tableHeight" :data="sheets.slice(pageSize * (currentPage - 1), pageSize * currentPage)"
-                      stripe>
-                <el-table-column type="expand">
-                    <template #default="props">
-                        <div style="display: flex">
-                            <div style="width: 40%">
-                                <div style="width: 100%; padding: 4px; background: gray; font-weight: bold; color: white">
-                                    出院诊断
-                                </div>
-                                <div style="display: flex; font-size: 13px; font-weight: bold; padding: 4px 0">
-                                    <div style="width: 10%">序号</div>
-                                    <div style="width: 30%">诊断编码</div>
-                                    <div>诊断名称</div>
-                                </div>
-                                <div v-for="item in props.row.disdiagList">
-                                    <div style="display: flex; padding: 4px 0; border-bottom: 1px dashed lightskyblue">
-                                        <div style="width: 10%">{{ item.no }}</div>
-                                        <div style="width: 30%">{{ item.code }}</div>
-                                        <div>{{ item.name }}</div>
-                                    </div>
-                                </div>
-                            </div>
-                            <div v-show="props.row.surgeryList.length > 0" style="width: 55%; margin-left: 30px">
-                                <div style="width: 100%; padding: 4px; background: gray; font-weight: bold; color: white">
-                                    手术记录
-                                </div>
-                                <div style="display: flex; font-size: 13px; font-weight: bold; padding: 4px 0">
-                                    <div style="width: 10%">序号</div>
-                                    <div style="width: 25%">手术时间</div>
-                                    <div style="width: 20%">手术编码</div>
-                                    <div>手术名称</div>
-                                </div>
-                                <div v-for="item in props.row.surgeryList">
-                                    <div style="display: flex; padding: 4px 0; border-bottom: 1px dashed lightskyblue">
-                                        <div style="width: 10%">{{ item.no }}</div>
-                                        <div style="width: 25%">{{ item.date }}</div>
-                                        <div style="width: 20%">{{ item.code }}</div>
-                                        <div>{{ item.name }}</div>
-                                    </div>
-                                </div>
-                            </div>
-                        </div>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="bah" label="住院号" width="100"></el-table-column>
-                <el-table-column prop="admissTimes" label="次数" width="50"></el-table-column>
-                <el-table-column prop="name" label="姓名" width="100"></el-table-column>
-                <el-table-column prop="sex" label="性别" width="50"></el-table-column>
-                <el-table-column prop="socialNo" label="身份证号"></el-table-column>
-                <el-table-column prop="birthDate" label="出生日期" width="100"></el-table-column>
-                <el-table-column prop="phone" label="电话" width="100"></el-table-column>
-                <el-table-column prop="admissDate" label="入院时间"></el-table-column>
-                <el-table-column prop="admissDept" label="入院科室"></el-table-column>
-                <el-table-column prop="dismissDate" label="出院时间"></el-table-column>
-                <el-table-column prop="dismissDept" label="出院科室"></el-table-column>
-                <el-table-column prop="admissDoctorName" label="入院医生" width="100"></el-table-column>
-                <el-table-column prop="mainDoctorName" label="主治医生" width="100"></el-table-column>
-            </el-table>
-            <el-pagination
-                    :current-page="currentPage"
-                    :page-size="pageSize"
-                    :page-sizes="[10, 30, 50, 100]"
-                    :total="sheets.length"
-                    layout="total, sizes, prev, pager, next, jumper"
-                    style="margin-top: 5px"
-                    @size-change="handleSizeChange"
-                    @current-change="handleCurrentChange"
-            ></el-pagination>
-        </template>
-    </page-layer>
+  <page-layer>
+    <template #header>
+      <el-date-picker v-model="month" :clearable="false" placeholder="出院日期" style="width: 110px"
+                      type="month"></el-date-picker>
+      <el-divider direction="vertical"></el-divider>
+      <el-button type="primary" icon="Search" @click="getAnalyzedSheets">检索</el-button>
+      <el-button type="primary" icon="Download" @click="exportExcel">导出csv</el-button>
+    </template>
+    <template #main>
+      <el-table :height="tableHeight" :data="sheets.slice(pageSize * (currentPage - 1), pageSize * currentPage)"
+                stripe>
+        <el-table-column type="expand">
+          <template #default="props">
+            <div style="display: flex">
+              <div style="width: 40%">
+                <div style="width: 100%; padding: 4px; background: gray; font-weight: bold; color: white">
+                  出院诊断
+                </div>
+                <div style="display: flex; font-size: 13px; font-weight: bold; padding: 4px 0">
+                  <div style="width: 10%">序号</div>
+                  <div style="width: 30%">诊断编码</div>
+                  <div>诊断名称</div>
+                </div>
+                <div v-for="item in props.row.disdiagList">
+                  <div style="display: flex; padding: 4px 0; border-bottom: 1px dashed lightskyblue">
+                    <div style="width: 10%">{{ item.no }}</div>
+                    <div style="width: 30%">{{ item.code }}</div>
+                    <div>{{ item.name }}</div>
+                  </div>
+                </div>
+              </div>
+              <div v-show="props.row.surgeryList.length > 0" style="width: 55%; margin-left: 30px">
+                <div style="width: 100%; padding: 4px; background: gray; font-weight: bold; color: white">
+                  手术记录
+                </div>
+                <div style="display: flex; font-size: 13px; font-weight: bold; padding: 4px 0">
+                  <div style="width: 10%">序号</div>
+                  <div style="width: 25%">手术时间</div>
+                  <div style="width: 20%">手术编码</div>
+                  <div>手术名称</div>
+                </div>
+                <div v-for="item in props.row.surgeryList">
+                  <div style="display: flex; padding: 4px 0; border-bottom: 1px dashed lightskyblue">
+                    <div style="width: 10%">{{ item.no }}</div>
+                    <div style="width: 25%">{{ item.date }}</div>
+                    <div style="width: 20%">{{ item.code }}</div>
+                    <div>{{ item.name }}</div>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="bah" label="住院号" width="100"></el-table-column>
+        <el-table-column prop="admissTimes" label="次数" width="50"></el-table-column>
+        <el-table-column prop="name" label="姓名" width="100"></el-table-column>
+        <el-table-column prop="sex" label="性别" width="50"></el-table-column>
+        <el-table-column prop="socialNo" label="身份证号"></el-table-column>
+        <el-table-column prop="birthDate" label="出生日期" width="100"></el-table-column>
+        <el-table-column prop="phone" label="电话" width="100"></el-table-column>
+        <el-table-column prop="admissDate" label="入院时间"></el-table-column>
+        <el-table-column prop="admissDept" label="入院科室"></el-table-column>
+        <el-table-column prop="dismissDate" label="出院时间"></el-table-column>
+        <el-table-column prop="dismissDept" label="出院科室"></el-table-column>
+        <el-table-column prop="admissDoctorName" label="入院医生" width="100"></el-table-column>
+        <el-table-column prop="mainDoctorName" label="主治医生" width="100"></el-table-column>
+      </el-table>
+      <el-pagination
+          :current-page="currentPage"
+          :page-size="pageSize"
+          :page-sizes="[10, 30, 50, 100]"
+          :total="sheets.length"
+          layout="total, sizes, prev, pager, next, jumper"
+          style="margin-top: 5px"
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+      ></el-pagination>
+    </template>
+  </page-layer>
 </template>
 
 <script setup name="FrontSheetExport">
@@ -86,6 +86,7 @@ import {ElMessage} from 'element-plus'
 import {formatMonth} from '@/utils/date'
 import {fetchSheets} from '@/api/case-front-sheet'
 import {Export} from '@/utils/ExportExcel'
+import {exportCSV} from "@/utils/ExportCVS";
 import PageLayer from "@/layout/PageLayer";
 
 const windowSize = store.state.app.windowSize
@@ -97,223 +98,225 @@ let sheets = $ref([])
 let pageSize = $ref(30)
 let currentPage = $ref(1)
 const handleSizeChange = (val) => {
-    pageSize = val
+  pageSize = val
 }
 const handleCurrentChange = (val) => {
-    currentPage = val
+  currentPage = val
 }
 
 const getAnalyzedSheets = () => {
-    if (!month) {
-        ElMessage({
-            message: '请先选择出院日期',
-            type: 'warning',
-            duration: 2500,
-            showClose: true,
-        })
-        return
-    }
-    month = formatMonth(month)
-    fetchSheets(month).then((res) => {
-        sheets = res
+  if (!month) {
+    ElMessage({
+      message: '请先选择出院日期',
+      type: 'warning',
+      duration: 2500,
+      showClose: true,
     })
+    return
+  }
+  month = formatMonth(month)
+  fetchSheets(month).then((res) => {
+    sheets = res
+  })
 }
 
 const exportExcel = () => {
-    if (sheets.length === 0) {
-        ElMessage({
-            message: '没有可以导出的数据!',
-            type: 'warning',
-            duration: 2500,
-            showClose: true,
-        })
-    } else {
-        sheets.forEach((itm) => {
-            itm.instituionCode = '430000150806'
-            itm.instituionName = '长沙泰和医院'
-            itm.certtype = itm.country === '中国' ? '1' : '9'
-            itm.unitinfo = itm.unitName + '/' + itm.unitPlace
-            itm.daytimeSurgery = 0
-            itm.blank = '-'
-
-            const diagList = itm.disdiagList
-            itm.otherDisdiagSize = diagList.length - 1
-            for (let i = 0; i < diagList.length; i++) {
-                itm['disdiagCode' + i] = diagList[i].code
-                itm['disdiagName' + i] = diagList[i].name
-                itm['disdiagAdms' + i] = diagList[0].admissStatus
-                itm['disdiagDiss' + i] = diagList[0].dismissStatus
-            }
+  if (sheets.length === 0) {
+    ElMessage({
+      message: '没有可以导出的数据!',
+      type: 'warning',
+      duration: 2500,
+      showClose: true,
+    })
+  } else {
+    sheets.forEach((itm) => {
+      itm.instituionCode = '430000150806'
+      itm.instituionName = '长沙泰和医院'
+      itm.certtype = itm.country === '中国' ? '1' : '9'
+      itm.unitinfo = itm.unitName + '/' + itm.unitPlace
+      itm.daytimeSurgery = 0
+      itm.blank = '-'
 
-            const surgeryList = itm.surgeryList
-            if (surgeryList.length === 0) {
-                itm.surgeryCode0 = ''
-                itm.surgeryName0 = ''
-                itm.surgeryDate0 = ''
-                itm.surgeryLevel0 = ''
-                itm.surgeryLasttime0 = ''
-                itm.surgeryOptor0 = ''
-                itm.surgeryAst10 = ''
-                itm.surgeryAst20 = ''
-                itm.surgeryWjwCh0 = ''
-                itm.surgeryAnae0 = ''
-                itm.surgeryAnaeLevel0 = ''
-                itm.surgeryAnaeName0 = ''
-            } else {
-                for (let i = 0; i < surgeryList.length; i++) {
-                    itm['surgeryCode' + i] = surgeryList[i].code
-                    itm['surgeryName' + i] = surgeryList[i].name
-                    itm['surgeryDate' + i] = surgeryList[i].date
-                    itm['surgeryLevel' + i] = surgeryList[i].level
-                    itm['surgeryLasttime' + i] = ''
-                    itm['surgeryOptor' + i] = surgeryList[i].operatorName
-                    itm['surgeryAst1' + i] = surgeryList[i].assistantOneName
-                    itm['surgeryAst2' + i] = surgeryList[i].assistantTwoName
-                    itm['surgeryWjwCh' + i] = surgeryList[i].wjwCutHeal
-                    itm['surgeryAnae' + i] = surgeryList[i].anaesthesia
-                    itm['surgeryAnaeLevel' + i] = ''
-                    itm['surgeryAnaeName' + i] = surgeryList[i].anaesthesiaorName
-                }
-            }
-        })
+      const diagList = itm.disdiagList
+      itm.otherDisdiagSize = diagList.length - 1
+      for (let i = 0; i < diagList.length; i++) {
+        itm['disdiagCode' + i] = diagList[i].code
+        itm['disdiagName' + i] = diagList[i].name
+        itm['disdiagAdms' + i] = diagList[0].admissStatus
+        itm['disdiagDiss' + i] = diagList[0].dismissStatus
+      }
 
-        const title = {
-            instituionCode: 'A01',
-            instituionName: 'A02',
-            bah: 'A48',
-            admissTimes: 'A49',
-            admissDate: 'B12',
-            dismissDate: 'B15',
-            healthCardNo: 'A47',
-            payMethod: 'A46C',
-            name: 'A11',
-            sex: 'A12C',
-            birthDate: 'A13',
-            age: 'A14',
-            country: 'A15C',
-            marriage: 'A21C',
-            occupation: 'A38C',
-            nation: 'A19C',
-            certtype: 'A20N',
-            socialNo: 'A20',
-            birthPlaceName: 'A22',
-            nativePlace: 'A23C',
-            hkPlaceName: 'A24',
-            hkZipCode: 'A25C',
-            livePlace: 'A26',
-            phone: 'A27',
-            addrZipCode: 'A28C',
-            unitinfo: 'A29',
-            unitPhone: 'A30',
-            unitZipCode: 'A31C',
-            contactName: 'A32',
-            contactRelation: 'A33C',
-            contactAddrName: 'A34',
-            contactPhone: 'A35',
-            daytimeSurgery: 'B38',
-            zyAdmissWay: 'B11C',
-            admissDeptCode: 'B13C',
-            admissWard: 'B14',
-            zkWard: 'B21C',
-            dismissDeptCode: 'B16C',
-            dismissWard: 'B17',
-            admissDays: 'B20',
-            clinicDiagCode: 'C01C',
-            clinicDiagStr: 'C02N',
-            disdiagCode0: 'C03C',
-            disdiagName0: 'C04N',
-            disdiagAdms0: 'C05C',
-            disdiagDiss0: 'F05',
-            // 理想情况是在这里做其他诊断的插入
-            pathologicDiagCode: 'C09C',
-            pathologicDiagStr: 'C10N',
-            blh: 'C11',
-            hurtReasonCode: 'C12C',
-            hurtReasonName: 'C13N',
-            allergy: 'C24C',
-            allergicMedicine: 'C25',
-            hbsAg: 'F10',
-            hcvAb: 'F11',
-            hivAb: 'F12',
-            deptLeader: 'B22C',
-            deptLeaderName: 'B22',
-            leaderDoctor: 'B23C',
-            leaderDoctorName: 'B23',
-            mainDoctor: 'B24C',
-            mainDoctorName: 'B24',
-            admissDoctor: 'B25C',
-            admissDoctorName: 'B25',
-            dutyNurse: 'B26C',
-            dutyNurseName: 'B26',
-            studyDoctorName: 'B27',
-            internshipDoctorName: 'B28',
-            coderName: 'B29',
-            qualityControlLevel: 'B30C',
-            qualityControlDoctorName: 'B31',
-            qualityControlNurseName: 'B32',
-            qualityControlDate: 'B33',
-            autopsy: 'C34C',
-            bloodType: 'C26C',
-            rh: 'C27C',
-            surgeryCode0: 'C14x01C',
-            surgeryName0: 'C15x01N',
-            surgeryDate0: 'C16x01',
-            surgeryLevel0: 'C17x01',
-            surgeryLasttime0: 'F13',
-            surgeryOptor0: 'C18x01',
-            surgeryAst10: 'C19x01',
-            surgeryAst20: 'C20x01',
-            surgeryWjwCh0: 'C21x01C',
-            surgeryAnae0: 'C22x01C',
-            surgeryAnaeLevel0: 'F15',
-            surgeryAnaeName0: 'C23x01',
-            // 理想情况是在这里做其他手术的插入
-            ageDays: 'A16',
-            newBornWeight: 'A18x01',
-            newBornAdmissWeight: 'A17',
-            comaDaysBeforeAdmiss: 'C28',
-            comaHoursBeforeAdmiss: 'C29',
-            comaMinutesBeforeAdmiss: 'C30',
-            comaDaysAfterAdmiss: 'C31',
-            comaHoursAfterAdmiss: 'C32',
-            comaMinutesAfterAdmiss: 'C33',
-            admissAgainInOneMonth: 'B36C',
-            admissAgainPurpose: 'B37',
-            zyDismissWay: 'B34C',
-            dismissDestination: 'B35',
-            totalCost: 'D01',
-            selfPay: 'D09',
-            surgicalFee: 'D20',
-            anesthetizeFee: 'D20x01',
-            surgeryFee: 'D20x02',
-            tcmTreatmentFee: 'D22',
+      const surgeryList = itm.surgeryList
+      if (surgeryList.length === 0) {
+        itm.surgeryCode0 = ''
+        itm.surgeryName0 = ''
+        itm.surgeryDate0 = ''
+        itm.surgeryLevel0 = ''
+        itm.surgeryLasttime0 = ''
+        itm.surgeryOptor0 = ''
+        itm.surgeryAst10 = ''
+        itm.surgeryAst20 = ''
+        itm.surgeryWjwCh0 = ''
+        itm.surgeryAnae0 = ''
+        itm.surgeryAnaeLevel0 = ''
+        itm.surgeryAnaeName0 = ''
+      } else {
+        for (let i = 0; i < surgeryList.length; i++) {
+          itm['surgeryCode' + i] = surgeryList[i].code
+          itm['surgeryName' + i] = surgeryList[i].name
+          itm['surgeryDate' + i] = surgeryList[i].date
+          itm['surgeryLevel' + i] = surgeryList[i].level
+          itm['surgeryLasttime' + i] = ''
+          itm['surgeryOptor' + i] = surgeryList[i].operatorName
+          itm['surgeryAst1' + i] = surgeryList[i].assistantOneName
+          itm['surgeryAst2' + i] = surgeryList[i].assistantTwoName
+          itm['surgeryWjwCh' + i] = surgeryList[i].wjwCutHeal
+          itm['surgeryAnae' + i] = surgeryList[i].anaesthesia
+          itm['surgeryAnaeLevel' + i] = ''
+          itm['surgeryAnaeName' + i] = surgeryList[i].anaesthesiaorName
         }
+      }
+    })
 
-        for (let i = 1; i < 41; i++) {
-            let mark = ('0' + i).slice(-2)
-            title['disdiagCode' + i] = `C06x${mark}C`
-            title['disdiagName' + i] = `C07x${mark}N`
-            title['disdiagAdms' + i] = `C08x${mark}C`
-            title['disdiagDiss' + i] = `F06x${mark}`
-        }
+    const title = {
+      instituionCode: 'A01',
+      instituionName: 'A02',
+      bah: 'A48',
+      admissTimes: 'A49',
+      admissDate: 'B12',
+      dismissDate: 'B15',
+      healthCardNo: 'A47',
+      payMethod: 'A46C',
+      name: 'A11',
+      sex: 'A12C',
+      birthDate: 'A13',
+      age: 'A14',
+      country: 'A15C',
+      marriage: 'A21C',
+      occupation: 'A38C',
+      nation: 'A19C',
+      certtype: 'A20N',
+      socialNo: 'A20',
+      birthPlaceName: 'A22',
+      nativePlace: 'A23C',
+      hkPlaceName: 'A24',
+      hkZipCode: 'A25C',
+      livePlace: 'A26',
+      phone: 'A27',
+      addrZipCode: 'A28C',
+      unitinfo: 'A29',
+      unitPhone: 'A30',
+      unitZipCode: 'A31C',
+      contactName: 'A32',
+      contactRelation: 'A33C',
+      contactAddrName: 'A34',
+      contactPhone: 'A35',
+      daytimeSurgery: 'B38',
+      zyAdmissWay: 'B11C',
+      admissDeptCode: 'B13C',
+      admissWard: 'B14',
+      zkWard: 'B21C',
+      dismissDeptCode: 'B16C',
+      dismissWard: 'B17',
+      admissDays: 'B20',
+      clinicDiagCode: 'C01C',
+      clinicDiagStr: 'C02N',
+      disdiagCode0: 'C03C',
+      disdiagName0: 'C04N',
+      disdiagAdms0: 'C05C',
+      disdiagDiss0: 'F05',
+      // 理想情况是在这里做其他诊断的插入
+      pathologicDiagCode: 'C09C',
+      pathologicDiagStr: 'C10N',
+      blh: 'C11',
+      hurtReasonCode: 'C12C',
+      hurtReasonName: 'C13N',
+      allergy: 'C24C',
+      allergicMedicine: 'C25',
+      hbsAg: 'F10',
+      hcvAb: 'F11',
+      hivAb: 'F12',
+      deptLeader: 'B22C',
+      deptLeaderName: 'B22',
+      leaderDoctor: 'B23C',
+      leaderDoctorName: 'B23',
+      mainDoctor: 'B24C',
+      mainDoctorName: 'B24',
+      admissDoctor: 'B25C',
+      admissDoctorName: 'B25',
+      dutyNurse: 'B26C',
+      dutyNurseName: 'B26',
+      studyDoctorName: 'B27',
+      internshipDoctorName: 'B28',
+      coderName: 'B29',
+      qualityControlLevel: 'B30C',
+      qualityControlDoctorName: 'B31',
+      qualityControlNurseName: 'B32',
+      qualityControlDate: 'B33',
+      autopsy: 'C34C',
+      bloodType: 'C26C',
+      rh: 'C27C',
+      surgeryCode0: 'C14x01C',
+      surgeryName0: 'C15x01N',
+      surgeryDate0: 'C16x01',
+      surgeryLevel0: 'C17x01',
+      surgeryLasttime0: 'F13',
+      surgeryOptor0: 'C18x01',
+      surgeryAst10: 'C19x01',
+      surgeryAst20: 'C20x01',
+      surgeryWjwCh0: 'C21x01C',
+      surgeryAnae0: 'C22x01C',
+      surgeryAnaeLevel0: 'F15',
+      surgeryAnaeName0: 'C23x01',
+      // 理想情况是在这里做其他手术的插入
+      ageDays: 'A16',
+      newBornWeight: 'A18x01',
+      newBornAdmissWeight: 'A17',
+      comaDaysBeforeAdmiss: 'C28',
+      comaHoursBeforeAdmiss: 'C29',
+      comaMinutesBeforeAdmiss: 'C30',
+      comaDaysAfterAdmiss: 'C31',
+      comaHoursAfterAdmiss: 'C32',
+      comaMinutesAfterAdmiss: 'C33',
+      admissAgainInOneMonth: 'B36C',
+      admissAgainPurpose: 'B37',
+      zyDismissWay: 'B34C',
+      dismissDestination: 'B35',
+      totalCost: 'D01',
+      selfPay: 'D09',
+      surgicalFee: 'D20',
+      anesthetizeFee: 'D20x01',
+      surgeryFee: 'D20x02',
+      tcmTreatmentFee: 'D22',
+    }
 
-        for (let i = 1; i < 41; i++) {
-            let mark = ('0' + i).slice(-2)
-            title['surgeryCode' + i] = `C35x${mark}C`
-            title['surgeryName' + i] = `C36x${mark}N`
-            title['surgeryDate' + i] = `C37x${mark}`
-            title['surgeryLevel' + i] = `C38x${mark}`
-            title['surgeryLasttime' + i] = `F14x${mark}`
-            title['surgeryOptor' + i] = `C39x${mark}`
-            title['surgeryAst1' + i] = `C40x${mark}`
-            title['surgeryAst2' + i] = `C41x${mark}`
-            title['surgeryWjwCh' + i] = `C42x${mark}C`
-            title['surgeryAnae' + i] = `C43x${mark}C`
-            title['surgeryAnaeLevel' + i] = `F16x${mark}`
-            title['surgeryAnaeName' + i] = `C44x${mark}`
-        }
+    for (let i = 1; i < 41; i++) {
+      let mark = ('0' + i).slice(-2)
+      title['disdiagCode' + i] = `C06x${mark}C`
+      title['disdiagName' + i] = `C07x${mark}N`
+      title['disdiagAdms' + i] = `C08x${mark}C`
+      title['disdiagDiss' + i] = `F06x${mark}`
+    }
 
-        Export(sheets, title, `【${month}】出院数据`)
+    for (let i = 1; i < 41; i++) {
+      let mark = ('0' + i).slice(-2)
+      title['surgeryCode' + i] = `C35x${mark}C`
+      title['surgeryName' + i] = `C36x${mark}N`
+      title['surgeryDate' + i] = `C37x${mark}`
+      title['surgeryLevel' + i] = `C38x${mark}`
+      title['surgeryLasttime' + i] = `F14x${mark}`
+      title['surgeryOptor' + i] = `C39x${mark}`
+      title['surgeryAst1' + i] = `C40x${mark}`
+      title['surgeryAst2' + i] = `C41x${mark}`
+      title['surgeryWjwCh' + i] = `C42x${mark}C`
+      title['surgeryAnae' + i] = `C43x${mark}C`
+      title['surgeryAnaeLevel' + i] = `F16x${mark}`
+      title['surgeryAnaeName' + i] = `C44x${mark}`
     }
+
+    const yearMonth = month.split('-')
+    const fileName = `430000150806_长沙泰和医院_${yearMonth[0]}_${yearMonth[1]}.csv`
+    exportCSV(sheets, title, fileName)
+  }
 }
 </script>