1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631 |
- <template>
- <div class="layout_container fill-sheet">
- <header class="round-header">
- <el-select
- v-model="currentWard"
- @change="handleWardChange"
- style="width: 120px"
- filterable
- >
- <el-option
- v-for="item in userWards"
- :key="item.code"
- :value="item.code"
- :label="item.name"
- ></el-option>
- </el-select>
- <el-select
- v-model="inOutStatus"
- style="width: 80px; margin-right: 8px"
- @change="changeInOutStatus"
- >
- <el-option
- v-for="item in inOutOptions"
- :key="item.code"
- :value="item.code"
- :label="item.name"
- ></el-option>
- </el-select>
- <el-button
- type="primary"
- icon="Clock"
- v-show="inOutStatus === 2"
- @click="showSelectDateRange = true"
- >
- 日期范围
- </el-button>
- <el-divider direction="vertical"></el-divider>
- <el-input
- v-model="inpatientNo"
- style="width: 110px"
- placeholder="住院号"
- clearable
- ></el-input>
- <el-button
- type="primary"
- icon="Search"
- @click="searchPatient"
- style="margin-left: 8px"
- >搜索患者
- </el-button>
- <el-divider direction="vertical"></el-divider>
- <el-button
- type="primary"
- icon="Edit"
- @click="openYbDiag"
- v-if="inOutStatus === 1"
- >医保诊断
- </el-button>
- <el-button type="primary" icon="Upload" @click="saveVerify(1)"
- >保存首页
- </el-button>
- <el-dropdown
- trigger="click"
- type="primary"
- @command="sheetQualityVerification"
- style="margin: 0 8px"
- >
- <el-button icon="DataLine" type="primary"
- >病案质控<i class="el-icon-arrow-down el-icon--right"></i
- ></el-button>
- <template #dropdown>
- <el-dropdown-menu>
- <el-dropdown-item command="applyVerification"
- >申请审核
- </el-dropdown-item>
- <el-dropdown-item command="verificationRecord"
- >审核记录
- </el-dropdown-item>
- </el-dropdown-menu>
- </template>
- </el-dropdown>
- <el-button type="success" icon="Printer" @click="beforePrint(1)"
- >打印正面
- </el-button>
- <el-button type="success" icon="Printer" @click="beforePrint(2)"
- >打印反面
- </el-button>
- <el-button
- type="primary"
- icon="PieChart"
- @click="setlUplaodClick"
- v-if="inOutStatus === 2"
- >
- 结算清单质控
- </el-button>
- <el-button type="danger" icon="Download" @click="showExportPanel"
- >历史病案导出
- </el-button>
- </header>
- <div class="layout_main layout_container layout-horizontal">
- <aside class="layout_el-table">
- <el-table
- ref="asideTable"
- :data="cptOverviews"
- stripe
- highlight-current-row
- @row-click="handleClickOverview"
- >
- <el-table-column
- prop="bedNo"
- label="床号"
- width="40"
- ></el-table-column>
- <el-table-column label="姓名" width="75">
- <template #default="scope">
- <img
- class="sex-icon"
- :src="scope.row.sex === 1 ? maleIcon : femaleIcon"
- />
- {{ scope.row.name }}
- </template>
- </el-table-column>
- <el-table-column label="住院号-次数" width="85">
- <template #default="scope">
- <span style="font-weight: bold; color: black">
- {{ scope.row.bah }}
- </span>
- -{{ scope.row.times }}
- </template>
- </el-table-column>
- <el-table-column prop="doctorName" label="医生" width="90">
- <template #header>
- <span style="margin-right: 8px">医生</span>
- <el-checkbox v-model="onlyShowMyPatients">我的</el-checkbox>
- </template>
- </el-table-column>
- </el-table>
- </aside>
- <div
- style="
- min-width: 800px;
- padding: 0 20px 0 35px;
- overflow-y: scroll;
- position: relative;
- "
- id="scrollWrapper"
- >
- <div style="position: absolute; top: 20px; left: 20px">
- <span
- v-if="patient.auditState === 'NONE'"
- class="audit-state audit-state_none"
- >
- 病案质控未申请
- </span>
- <span
- v-else-if="patient.auditState === 'INITIAL'"
- class="audit-state audit-state_initial"
- >
- 病案质控未审核
- </span>
- <span
- v-else-if="patient.auditState === 'APPROVED'"
- class="audit-state audit-state_approved"
- >
- 病案质控已通过
- </span>
- <span
- v-else-if="patient.auditState === 'REJECTED'"
- class="audit-state audit-state_rejected"
- @click="sheetQualityVerification('verificationRecord')"
- >
- 病案质控已驳回
- </span>
- </div>
- <div>
- <h3 style="width: 100%; font-size: 17px; text-align: center">
- 住 院 病 案 首 页
- </h3>
- <div style="width: 100%; font-size: 15px; text-align: center">
- 医疗机构:
- <span style="font-weight: 700">{{ env.VITE_HOSPITAL_NAME }}</span>
- ( 组织机构代码:
- <span style="font-weight: 700">{{ env.VITE_HOSPITAL_CODE }}</span
- >)
- </div>
- <div style="height: 25px; line-height: 25px; display: flex">
- <div>
- 医疗付费方式:
- <select
- id="payMethod"
- v-model="patient.payMethod"
- style="width: 180px"
- >
- <option
- v-for="(item, index) in dics.getPayMethod"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- </div>
- <div style="width: 120px; margin-left: 12px">
- 健康卡号: {{ patient.healthCardNo }}
- </div>
- <div style="width: 100px">
- 第 {{ patient.admissTimes }} 次住院
- </div>
- <div style="width: 130px">病案号: {{ patient.bah }}</div>
- </div>
- </div>
- <div id="page1" style="border: 1px solid black; padding: 5px">
- <div>
- 姓名:
- <input id="name" v-model="patient.name" style="width: 130px" />
- 性别:
- <select id="sex" v-model="patient.sex">
- <option
- v-for="(item, index) in dics.getSexCode"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- 出生日期:
- <input
- id="birthDate"
- v-model="patient.birthDate"
- style="width: 90px"
- />
- 年龄:
- <input
- id="age"
- v-model="patient.age"
- type="number"
- style="width: 30px"
- />
- 国籍:
- <select id="country" v-model="patient.country">
- <option
- v-for="(item, index) in dics.getCountry"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- </div>
- <div>
- (年龄不足 1 周岁的)年龄:
- <input
- id="ageDays"
- type="number"
- v-model="patient.ageDays"
- style="width: 50px"
- />天 新生儿出生体重:
- <input
- id="newBornWeight"
- type="number"
- v-model="patient.newBornWeight"
- style="width: 70px"
- />克 新生儿入院体重:
- <input
- id="newBornAdmissWeight"
- type="number"
- v-model="patient.newBornAdmissWeight"
- style="width: 70px"
- />克
- </div>
- <div>
- 出生地:
- <input
- id="birthPlaceName"
- v-model="patient.birthPlaceName"
- readonly
- style="width: 230px"
- @click="showSearchData('birth')"
- />
- 籍贯:
- <input
- id="nativePlaceName"
- v-model="patient.nativePlaceName"
- readonly
- style="width: 170px"
- @click="showSearchData('native')"
- />
- 民族:
- <select id="nation" v-model="patient.nation">
- <option
- v-for="(item, index) in dics.getNation"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- </div>
- <div>
- 身份证号:
- <input
- id="socialNo"
- v-model="patient.socialNo"
- style="width: 160px"
- maxlength="18"
- />
- 职业:
- <select id="occupation" v-model="patient.occupation">
- <option
- v-for="(item, index) in dics.getOccupation"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- 婚姻:
- <select id="marriage" v-model="patient.marriage">
- <option
- v-for="(item, index) in dics.getMarriageCode"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- </div>
- <div id="livePlace">
- 现住址:
- <span id="livePlace1">
- <el-cascader
- v-model="patient.standardAddress"
- :options="regions"
- placeholder="省/市/区"
- style="width: 230px"
- ></el-cascader>
- </span>
- <input
- id="livePlace2"
- v-model="patient.livePlace"
- style="width: 300px"
- placeholder="街道/小区/乡镇"
- />
- </div>
- <div>
- 电话:
- <input id="phone" v-model="patient.phone" style="width: 90px" />
- 邮编:
- <input
- id="addrZipCode"
- v-model="patient.addrZipCode"
- style="width: 70px"
- maxlength="6"
- />
- </div>
- <div>
- 户口地址:
- <input
- id="hkPlaceName"
- v-model="patient.hkPlaceName"
- style="width: 300px"
- @click="showGoSearchBtn1 = true"
- @blur="dismissShowSearch(1)"
- />
- <el-button
- icon="Search"
- type="primary"
- v-show="showGoSearchBtn1"
- @click="showSearchData('hk')"
- >
- 前往搜索
- </el-button>
- 邮编:
- <input
- id="hkZipCode"
- v-model="patient.hkZipCode"
- style="width: 70px"
- maxlength="6"
- />
- </div>
- <div>
- 工作单位及地址:
- <input
- id="unitName"
- v-model="patient.unitName"
- style="margin-right: 0; width: 145px"
- />
- /
- <input
- id="unitPlace"
- v-model.trim="patient.unitPlace"
- style="width: 145px"
- />
- 单位电话:
- <input
- id="unitPhone"
- v-model="patient.unitPhone"
- style="width: 80px"
- />
- 邮编:
- <input
- id="unitZipCode"
- v-model="patient.unitZipCode"
- style="width: 50px"
- maxlength="6"
- />
- </div>
- <div>
- 联系人姓名:
- <input
- id="contactName"
- v-model="patient.contactName"
- style="width: 200px"
- />
- 联系人关系:
- <select id="contactRelation" v-model="patient.contactRelation">
- <option
- v-for="(item, index) in dics.getRelations"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- </div>
- <div>
- 联系人地址:
- <input
- id="contactAddrName"
- v-model="patient.contactAddrName"
- style="width: 300px"
- @click="showGoSearchBtn2 = true"
- @blur="dismissShowSearch(2)"
- />
- <el-button
- icon="Search"
- type="primary"
- v-show="showGoSearchBtn2"
- @click="showSearchData('contact')"
- >
- 前往搜索
- </el-button>
- 联系人电话:
- <input
- id="contactPhone"
- v-model.trim="patient.contactPhone"
- style="width: 90px"
- />
- </div>
- <div>
- 入院途径:
- <select id="zyAdmissWay" v-model="patient.zyAdmissWay">
- <option
- v-for="(item, index) in dics.getAdmissWay"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- 是否手术:
- <select
- id="hasSurgery"
- v-model="patient.hasSurgery"
- @change="hasSurgeryChanged(patient.hasSurgery)"
- >
- <option
- v-for="itm in operations"
- :key="itm.code"
- :value="itm.code"
- >
- {{ itm.name }}
- </option>
- </select>
- </div>
- <div>
- 入院时间:<input
- id="admissDate"
- v-model="patient.admissDate"
- readonly
- style="width: 135px"
- />
- 入院科别:<input
- v-model="patient.admissDept"
- readonly
- style="width: 120px"
- />
- 病房:<input
- v-model="patient.admissWard"
- readonly
- style="width: 80px"
- />
- 转科科别:<input
- v-model="patient.transDept"
- readonly
- style="width: 120px"
- />
- </div>
- <div>
- 出院时间:<input
- id="dismissDate"
- v-model="patient.dismissDate"
- readonly
- style="width: 135px"
- />
- 出院科别:<input
- v-model="patient.dismissDept"
- readonly
- style="width: 120px"
- />
- 病房:<input
- v-model="patient.dismissWard"
- readonly
- style="width: 80px"
- />
- 住院天数:<input
- id="admissDays"
- v-model="patient.admissDays"
- style="width: 70px"
- />
- </div>
- <div id="clinicDiag" style="display: flex; align-items: center">
- 门(急)诊诊断:
- <input
- v-model="patient.clinicDiagStr"
- readonly
- style="width: 280px"
- @click="showSearchData('clinicdiag')"
- />
- 疾病编码:
- <input
- v-model="patient.clinicDiagCode"
- readonly
- style="width: 110px"
- @click="showSearchData('clinicdiag')"
- />
- <div
- v-if="patient.validClinicDiag === 0"
- style="font-size: 10px; margin: 8px 0 0 8px; color: red"
- >
- 门诊诊断编码有误
- </div>
- </div>
- <div id="admDiag" style="display: flex; align-items: center">
- 入院诊断名称:
- <input
- v-model="patient.supplement.admDiagName"
- readonly
- style="width: 280px"
- @click="showSearchData('admdiag')"
- />
- 入院诊断编码:
- <input
- v-model="patient.supplement.admDiagCode"
- readonly
- style="width: 110px"
- @click="showSearchData('admdiag')"
- />
- </div>
- <div style="display: flex; align-items: center">
- 入院时情况:
- <select
- id="admDiagStatus"
- style="width: 80px; margin-right: 30px"
- v-model="patient.supplement.admStatus"
- >
- <option :value="1">危</option>
- <option :value="2">急</option>
- <option :value="3">一般</option>
- </select>
- 入院后确诊日期:
- <input
- v-model="patient.supplement.diagnosisConfirmYear"
- type="number"
- style="width: 40px; text-align: center"
- />
- 年
- <input
- v-model="patient.supplement.diagnosisConfirmMonth"
- type="number"
- style="width: 20px; text-align: center"
- />
- 月
- <input
- v-model="patient.supplement.diagnosisConfirmDay"
- type="number"
- style="width: 20px; text-align: center"
- />
- 日
- </div>
- <div
- id="diagTable"
- style="
- height: max-content;
- display: flex;
- width: 720px;
- margin-top: 2px;
- "
- >
- <div style="width: 360px">
- <table
- style="
- width: 100%;
- border: 1px solid black;
- border-collapse: collapse;
- "
- >
- <tr>
- <th>主要诊断</th>
- <th>疾病编码</th>
- <th>入院病情</th>
- <th>出院病情</th>
- </tr>
- <tr>
- <td>
- <input
- id="disdiagMain"
- style="border: none !important; width: 170px"
- v-model="patient.disdiagList[0].name"
- @click="onSearchDiagFocus(0)"
- readonly
- />
- <div
- v-show="showDel[0]"
- style="width: 100%; text-align: center"
- >
- <el-button
- type="primary"
- icon="Edit"
- @click="showSearch = true"
- >修改
- </el-button>
- </div>
- </td>
- <td style="text-align: center">
- <input
- style="border: none !important; width: 100px"
- v-model="patient.disdiagList[0].code"
- readonly
- />
- </td>
- <td>
- <select
- id="disdiagMainAdmStatus"
- style="border: none !important; width: 30px"
- v-model="patient.disdiagList[0].admissStatus"
- >
- <option
- v-for="(item, index) in dics.getDisAdmissStatus"
- :key="index"
- :value="item.code"
- >
- {{ item.code }}
- </option>
- </select>
- </td>
- <td>
- <select
- style="border: none !important; width: 30px"
- v-model="patient.disdiagList[0].dismissStatus"
- @change="handleSelectCybq"
- >
- <option
- v-for="(item, index) in dics.getDisdiagStatus"
- :key="index"
- :value="item.code"
- >
- {{ item.code }}
- </option>
- </select>
- </td>
- </tr>
- <tr>
- <th colspan="4">其他诊断</th>
- </tr>
- <tr v-for="n in 11" :key="n">
- <td>
- <input
- style="
- border: none !important;
- text-align: left;
- padding-left: 5px;
- "
- v-model="patient.disdiagList[n].name"
- @click="onSearchDiagFocus(n)"
- readonly
- />
- <div
- v-show="showDel[n]"
- style="width: 100%; text-align: center"
- >
- <el-button
- type="primary"
- circle
- icon="Edit"
- @click="showSearch = true"
- ></el-button>
- <el-button
- type="danger"
- circle
- icon="Delete"
- @click="deleteDisdiag(n)"
- ></el-button>
- <el-button
- type="success"
- circle
- icon="Plus"
- @click="insertDisdiag(n)"
- ></el-button>
- </div>
- </td>
- <td>
- <input
- style="border: none !important; width: 90px"
- v-model="patient.disdiagList[n].code"
- readonly
- />
- </td>
- <td>
- <select
- style="border: none !important; width: 30px"
- v-model="patient.disdiagList[n].admissStatus"
- >
- <option
- v-for="(item, index) in dics.getDisAdmissStatus"
- :key="index"
- :value="item.code"
- >
- {{ item.code }}
- </option>
- </select>
- </td>
- <td>
- <select
- style="border: none !important; width: 30px"
- v-model="patient.disdiagList[n].dismissStatus"
- @change="handleSelectCybq"
- >
- <option
- v-for="(item, index) in dics.getDisdiagStatus"
- :key="index"
- :value="item.code"
- >
- {{ item.code }}
- </option>
- </select>
- </td>
- </tr>
- </table>
- </div>
- <div style="width: 360px">
- <table style="border: 1px solid black; border-collapse: collapse">
- <tr v-for="n in 14" :key="n">
- <td>
- <input
- style="border: none !important; width: 170px"
- v-model="patient.disdiagList[n + 11].name"
- @click="onSearchDiagFocus(n + 11)"
- readonly
- />
- <div
- v-show="showDel[n + 11]"
- style="width: 100%; text-align: center"
- >
- <button circle @click="showSearch = true">
- <i class="el-icon-edit"></i>
- </button>
- <button circle @click="deleteDisdiag(n + 11)">
- <i class="el-icon-delete"></i>
- </button>
- <button circle @click="insertDisdiag(n + 11)">
- <i class="el-icon-upload"></i>
- </button>
- </div>
- </td>
- <td>
- <input
- style="border: none !important; width: 100px"
- v-model="patient.disdiagList[n + 11].code"
- readonly
- />
- </td>
- <td>
- <select
- style="border: none !important; width: 30px"
- v-model="patient.disdiagList[n + 11].admissStatus"
- >
- <option
- v-for="(item, index) in dics.getDisAdmissStatus"
- :key="index"
- :value="item.code"
- >
- {{ item.code }}
- </option>
- </select>
- </td>
- <td>
- <select
- style="border: none !important; width: 30px"
- v-model="patient.disdiagList[n + 11].dismissStatus"
- @change="handleSelectCybq"
- >
- <option
- v-for="(item, index) in dics.getDisdiagStatus"
- :key="index"
- :value="item.code"
- >
- {{ item.code }}
- </option>
- </select>
- </td>
- </tr>
- </table>
- </div>
- </div>
- <div style="border-bottom: 1px solid black; font-size: 12px">
- 备注:
- <span>入院病情:</span>1.有,2.临床未确定,3.情况不明,4.无
- <span style="margin-left: 10px">出院病情:</span
- >1.治愈,2.好转,3.未愈,4.死亡,9.其他
- </div>
- <div>
- 损伤、中毒的外部原因:
- <input
- id="hurtReasonName"
- v-model="patient.hurtReasonName"
- readonly
- style="width: 360px"
- @click="showSearchData('hurt')"
- />
- 疾病编码:
- <input
- id="hurtReasonCode"
- v-model="patient.hurtReasonCode"
- style="width: 110px"
- readonly
- />
- <el-button
- type="danger"
- circle
- icon="Delete"
- @click="clearLine('hurtReason')"
- ></el-button>
- </div>
- <div>
- 病理诊断:
- <input
- id="pathologicDiagStr"
- v-model="patient.pathologicDiagStr"
- readonly
- style="width: 300px"
- @click="showSearchData('pathologic')"
- />
- 病理编码:
- <input
- id="pathologicDiagCode"
- v-model="patient.pathologicDiagCode"
- style="width: 90px"
- readonly
- />
- 病理号:
- <input id="blh" v-model="patient.blh" style="width: 70px" />
- <el-button
- type="danger"
- circle
- icon="Delete"
- @click="clearLine('pathologicDiag')"
- ></el-button>
- </div>
- <div>
- 药物过敏:
- <select
- id="allergy"
- v-model="patient.allergy"
- @change="onAllergyChanged"
- >
- <option
- v-for="(item, index) in haveOrNot"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- ,过敏药物:
- <input
- id="allergicMedicine"
- v-model="patient.allergicMedicine"
- style="width: 110px"
- />
- 死亡患者尸检:
- <select id="autopsy" v-model="patient.autopsy">
- <option
- v-for="(item, index) in autopsies"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- </div>
- <div>
- 输血前四项: HbsAg
- <select id="hbsAg" v-model="patient.hbsAg">
- <option
- v-for="(item, index) in dics.getHbsag"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- HCV-Ab
- <select id="hcvAb" v-model="patient.hcvAb" style="margin-left: 8px">
- <option
- v-for="(item, index) in dics.getHbsag"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- HIV-Ab
- <select id="hivAb" v-model="patient.hivAb" style="margin-left: 8px">
- <option
- v-for="(item, index) in dics.getHbsag"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- TP-Ab
- <select id="tpAb" v-model="patient.tpAb" style="margin-left: 8px">
- <option
- v-for="(item, index) in dics.getHbsag"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- </div>
- <div>
- 血型:
- <select
- id="bloodType"
- v-model="patient.bloodType"
- @change="handleSelectBloodType"
- >
- <option
- v-for="(item, index) in dics.getBloodType"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- Rh:
- <select id="rh" v-model="patient.rh">
- <option
- v-for="(item, index) in dics.getHbsag"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- </div>
- <div>
- 科室主任:
- <input
- id="deptLeaderName"
- readonly
- style="width: 70px"
- v-model="patient.deptLeaderName"
- @click="showSearchData('deptleader')"
- />
- 主任(副主任)医师:
- <input
- id="leaderDoctorName"
- readonly
- style="width: 70px"
- v-model="patient.leaderDoctorName"
- @click="showSearchData('leaderdoctor')"
- />
- 主治医师:
- <input
- id="mainDoctorName"
- readonly
- style="width: 70px"
- v-model="patient.mainDoctorName"
- @click="showSearchData('maindoctor')"
- />
- 住院医师:
- <input
- id="admissDoctorName"
- readonly
- style="width: 70px"
- v-model="patient.admissDoctorName"
- @click="showSearchData('admissdoctor')"
- />
- </div>
- <div>
- 责任护士:
- <input
- id="dutyNurseName"
- readonly
- style="width: 70px"
- v-model="patient.dutyNurseName"
- @click="showSearchData('dutynurse')"
- />
- 进修医师:
- <input
- id="studyDoctorName"
- readonly
- style="width: 70px"
- v-model="patient.studyDoctorName"
- @click="showSearchData('studydoctor')"
- />
- 实习医师:
- <input
- id="internshipDoctorName"
- readonly
- style="width: 70px"
- v-model="patient.internshipDoctorName"
- @click="showSearchData('internshipdoctor')"
- />
- 编码员:
- <input
- id="coderName"
- readonly
- style="width: 70px"
- v-model="patient.coderName"
- @click="showSearchData('coder')"
- />
- </div>
- <div>
- 病案质量:
- <select
- id="qualityControlLevel"
- v-model="patient.qualityControlLevel"
- >
- <option
- v-for="(item, index) in dics.getQualityLevel"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- 质控医师:
- <input
- id="qualityControlDoctorName"
- readonly
- style="width: 70px"
- v-model="patient.qualityControlDoctorName"
- @click="showSearchData('qualitycontroldoctor')"
- />
- 质控护士:
- <input
- style="width: 70px"
- readonly
- v-model="patient.qualityControlNurseName"
- @click="showSearchData('qualitycontrolnurse')"
- />
- 质控日期:
- <input
- id="qualityControlDate"
- style="width: 170px"
- type="date"
- v-model="patient.qualityControlDate"
- />
- </div>
- </div>
- <div id="page2" style="border: 1px solid black; padding: 5px">
- <table
- id="surgeryTable"
- style="border-collapse: collapse; width: 100%; margin-left: -25px"
- >
- <tr>
- <th rowspan="2" style="border: none"></th>
- <th rowspan="2">手术及操作名称</th>
- <th rowspan="2" style="width: 70px">手术及操作日期</th>
- <th rowspan="2" style="width: 10px">手术级别</th>
- <th rowspan="2">手术及操作编码</th>
- <th colspan="3">手术及操作医师</th>
- <th rowspan="2" style="width: 30px">切口愈合等级</th>
- <th rowspan="2">麻醉方式</th>
- <th rowspan="2">麻醉医师</th>
- </tr>
- <tr>
- <th>术者</th>
- <th>I助</th>
- <th>II助</th>
- </tr>
- <tr v-for="n in defaultSurgerySize" :key="n">
- <td style="border: none; width: 25px">
- <div v-if="patient.surgeryList[n - 1].name">
- <div
- v-if="n > 1"
- class="order-arrow"
- @click="changeSurgeryOrder(n - 1, n - 2)"
- >
- ↑
- </div>
- <div
- v-if="n < defaultSurgerySize && patient.surgeryList[n].name"
- class="order-arrow"
- style="margin-top: 5px"
- @click="changeSurgeryOrder(n - 1, n)"
- >
- ↓
- </div>
- <div
- v-if="n === defaultSurgerySize"
- class="order-arrow"
- style="margin-top: 4px"
- @click="addSurgeSize"
- >
- +
- </div>
- </div>
- </td>
- <td style="padding: 3px">
- <textarea
- id="surgeryMain"
- style="border: none !important; width: 90px"
- rows="3"
- v-model="patient.surgeryList[n - 1].name"
- @click="onSearchSurgeryFocus(n - 1)"
- readonly
- ></textarea>
- <div
- v-show="showDel[n - 1]"
- style="width: 100%; text-align: center"
- >
- <el-button
- type="primary"
- circle
- icon="Edit"
- @click="onEditSurgeryClick(n - 1)"
- ></el-button>
- <el-button
- type="danger"
- circle
- icon="Delete"
- @click="deleteSurgery(n - 1)"
- ></el-button>
- </div>
- </td>
- <td style="padding: 3px">
- <textarea
- style="border: none !important; width: 70px"
- v-model="patient.surgeryList[n - 1].date"
- rows="3"
- @click="showPickSurgeryDatetime(n - 1)"
- readonly
- ></textarea>
- </td>
- <td style="text-align-last: center">
- <select
- style="border: none !important; width: 30px"
- v-model="patient.surgeryList[n - 1].level"
- >
- <option
- v-for="(item, index) in dics.getOperateScale"
- :key="index"
- :value="item.code"
- >
- {{ item.code }}
- </option>
- </select>
- </td>
- <td>
- <input
- v-model="patient.surgeryList[n - 1].code"
- style="border: none !important; width: 70px"
- readonly
- />
- </td>
- <td>
- <input
- style="border: none !important; width: 40px"
- v-model="patient.surgeryList[n - 1].operatorName"
- @click="showSearchSurgerior('operator', n)"
- />
- </td>
- <td style="width: 50px">
- <div style="position: relative">
- <input
- style="border: none !important; width: 40px"
- v-model="patient.surgeryList[n - 1].assistantOneName"
- @click="showSearchSurgerior('assistantone', n)"
- />
- <div
- v-if="patient.surgeryList[n - 1].assistantOneName"
- style="position: absolute; top: -20px; right: 0"
- >
- <el-button
- type="danger"
- circle
- icon="Delete"
- @click="deleteAssistantOne(n - 1)"
- ></el-button>
- </div>
- </div>
- </td>
- <td style="width: 50px">
- <div style="position: relative">
- <input
- style="border: none !important; width: 40px"
- v-model="patient.surgeryList[n - 1].assistantTwoName"
- @click="showSearchSurgerior('assistanttwo', n)"
- />
- <div
- v-if="patient.surgeryList[n - 1].assistantTwoName"
- style="position: absolute; top: -20px; right: 0"
- >
- <el-button
- type="danger"
- circle
- icon="Delete"
- @click="deleteAssistantTwo(n - 1)"
- ></el-button>
- </div>
- </div>
- </td>
- <td style="text-align-last: center">
- <select
- v-model="patient.surgeryList[n - 1].cutHeal"
- style="border: none !important"
- >
- <option
- v-for="(item, index) in dics.getCutHealGrade"
- :key="index"
- :value="item.code"
- >
- {{ item.code }}
- </option>
- </select>
- </td>
- <td>
- <select
- v-model="patient.surgeryList[n - 1].anaesthesia"
- style="border: none !important"
- >
- <option
- v-for="(item, index) in dics.getAnaesthesia"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- </td>
- <td>
- <div style="position: relative">
- <input
- style="border: none !important; width: 40px"
- v-model="patient.surgeryList[n - 1].anaesthesiaorName"
- @click="showSearchSurgerior('anaesthesiaor', n)"
- />
- <div
- v-if="patient.surgeryList[n - 1].anaesthesiaorName"
- style="position: absolute; top: -20px; right: 0"
- >
- <el-button
- type="danger"
- circle
- icon="Delete"
- @click="deleteAnestor(n - 1)"
- ></el-button>
- </div>
- </div>
- </td>
- </tr>
- </table>
- <div>
- 离院方式:
- <select
- id="zyDismissWay"
- v-model="patient.zyDismissWay"
- @change="onDismissWayChanged"
- >
- <option
- v-for="(item, index) in dics.getZyDismissWay"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- ,拟接收医疗机构名称:
- <input
- id="dismissDestination"
- v-model="patient.dismissDestination"
- style="width: 210px"
- />
- </div>
- <div>
- 是否有出院31天内再住院计划:
- <select
- id="admissAgainInOneMonth"
- v-model="patient.admissAgainInOneMonth"
- @change="onAdmissAgainChanged"
- >
- <option
- v-for="(item, index) in haveOrNot"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- ,目的:
- <input
- id="admissAgainPurpose"
- v-model="patient.admissAgainPurpose"
- style="width: 300px"
- />
- </div>
- <div>
- 颅脑损伤患者昏迷时间: 入院前
- <input
- id="comaDaysBeforeAdmiss"
- v-model="patient.comaDaysBeforeAdmiss"
- style="width: 30px"
- />天
- <input
- id="comaHoursBeforeAdmiss"
- v-model="patient.comaHoursBeforeAdmiss"
- style="width: 30px"
- />小时
- <input
- id="comaMinutesBeforeAdmiss"
- v-model="patient.comaMinutesBeforeAdmiss"
- style="width: 30px"
- />分钟 入院后
- <input
- id="comaDaysAfterAdmiss"
- v-model="patient.comaDaysAfterAdmiss"
- style="width: 30px"
- />天
- <input
- id="comaHoursAfterAdmiss"
- v-model="patient.comaHoursAfterAdmiss"
- style="width: 30px"
- />小时
- <input
- id="comaMinutesAfterAdmiss"
- v-model="patient.comaMinutesAfterAdmiss"
- style="width: 30px"
- />分钟
- </div>
- <div>
- 住院费用(元): 总费用
- <input v-model="patient.totalCost" style="width: 110px" readonly />
- (自付金额:
- <input v-model="patient.selfPay" style="width: 110px" readonly />)
- </div>
- <div>
- 1.综合医疗服务类: (1)一般医疗服务费:
- <input
- v-model="patient.generalMedicalServiceFee"
- style="width: 70px"
- readonly
- />
- (2)一般治疗操作费:
- <input
- v-model="patient.generalTreatmentOperatingFee"
- style="width: 70px"
- readonly
- />
- (3)护理费:
- <input v-model="patient.careFee" style="width: 50px" readonly />
- </div>
- <div>
- (4)其他费:
- <input v-model="patient.elseFee" style="width: 70px" readonly />
- </div>
- <div>
- 2.诊断类: (5)病理诊断费:
- <input
- v-model="patient.pathologicDiagFee"
- style="width: 70px"
- readonly
- />
- (6)实验室诊断费:
- <input
- v-model="patient.experimentDiagFee"
- style="width: 70px"
- readonly
- />
- (7)影像学诊断费:
- <input v-model="patient.ctDiagFee" style="width: 70px" readonly />
- </div>
- <div>
- (8)临床诊断项目费:
- <input
- v-model="patient.clinicalDiagFee"
- style="width: 70px"
- readonly
- />
- </div>
- <div>
- 3.治疗类: (9)非手术治疗项目费:
- <input
- v-model="patient.notSurgicalFee"
- style="width: 70px"
- readonly
- />
- (临床物理治疗费:
- <input
- v-model="patient.clinicalPhysicalFee"
- style="width: 70px"
- readonly
- />)
- </div>
- <div>
- (10)手术治疗费:
- <input v-model="patient.surgicalFee" style="width: 70px" readonly />
- (麻醉费:
- <input
- v-model="patient.anesthetizeFee"
- style="width: 70px"
- readonly
- />
- 手术费:
- <input v-model="patient.surgeryFee" style="width: 70px" readonly />)
- </div>
- <div>
- 4.康复类: (11)康复费:
- <input v-model="patient.recoverFee" style="width: 70px" readonly />
- </div>
- <div>
- 5.中医类: (12)中医治疗费:
- <input
- v-model="patient.tcmTreatmentFee"
- style="width: 70px"
- readonly
- />
- </div>
- <div>
- 6.西药类: (13)西药费:
- <input
- v-model="patient.westMedicineFee"
- style="width: 70px"
- readonly
- />
- </div>
- <div>
- 7.中药类: (14)中成药费:
- <input
- v-model="patient.chinesePatentMedicineFee"
- style="width: 70px"
- readonly
- />
- (15)中草药费:
- <input
- v-model="patient.chineseHerbalMedicineFee"
- style="width: 70px"
- readonly
- />
- </div>
- <div>
- 8.血液和血液制品类: (16)血费:
- <input v-model="patient.bloodFee" style="width: 50px" readonly />
- (17)白蛋白类制品费:
- <input
- v-model="patient.albuminProductsFee"
- style="width: 50px"
- readonly
- />
- (18)球蛋白类制品费:
- <input
- v-model="patient.globulinProductsFee"
- style="width: 50px"
- readonly
- />
- </div>
- <div>
- (19)凝血因子类制品费:
- <input
- v-model="patient.coagulationFactorProductsFee"
- style="width: 70px"
- readonly
- />
- (20)细胞因子类制品费:
- <input
- v-model="patient.cytokineProductsFee"
- style="width: 70px"
- readonly
- />
- </div>
- <div>
- 9.耗材类: (21)检查用一次性医用材料费:
- <input
- v-model="patient.costOfDisposableMedicalMaterialsForExamination"
- style="width: 70px"
- readonly
- />
- (22)治疗用一次性医用材料费:
- <input
- v-model="patient.costOfDisposableMedicalMaterialsForTreatment"
- style="width: 70px"
- readonly
- />
- </div>
- <div>
- (23)手术用一次性医用材料费:
- <input
- v-model="patient.costOfDisposableMedicalMaterialsForOperation"
- style="width: 70px"
- readonly
- />
- </div>
- <div>
- 10.其他类: (24)其他费:
- <input v-model="patient.otherFees" style="width: 70px" readonly />
- </div>
- <div>
- 主要诊断治愈好转情况:
- <span style="border-bottom: 1px solid black; padding: 0 5px">
- {{ filterDismissStatus(patient.disdiagList[0].dismissStatus) }}
- </span>
- </div>
- <div>
- 诊断符合情况: 门诊与出院
- <select
- id="diagConform1"
- v-model="patient.diagConform1"
- style="margin-right: 12px"
- >
- <option
- v-for="(item, index) in dics.getDiagConform"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- 入院与出院
- <select id="diagConform2" v-model="patient.diagConform2">
- <option
- v-for="(item, index) in dics.getDiagConform"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- </div>
- <div>
- 术前与术后
- <select
- id="diagConform3"
- v-model="patient.diagConform3"
- style="margin-right: 12px"
- >
- <option
- v-for="(item, index) in dics.getDiagConform"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- 临床与病理
- <select
- id="diagConform4"
- v-model="patient.diagConform4"
- style="margin-right: 12px"
- >
- <option
- v-for="(item, index) in dics.getDiagConform"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- 放射与病理
- <select id="diagConform5" v-model="patient.diagConform5">
- <option
- v-for="(item, index) in dics.getDiagConform"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- </div>
- <div>
- 抢救情况: 抢救
- <input
- id="rescueTimes"
- v-model="patient.rescueTimes"
- type="number"
- style="width: 90px"
- />次, 成功
- <input
- id="rescueSuccessTimes"
- v-model="patient.rescueSuccessTimes"
- type="number"
- style="width: 90px"
- />次
- </div>
- <div>
- 单病种管理:
- <select
- id="monopathyManagement"
- v-model="patient.monopathyManagement"
- style="margin-right: 12px"
- >
- <option
- v-for="(item, index) in yesOrNo"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- 实施临床路径管理:
- <select
- id="clinicalPathwayManagement"
- v-model="patient.clinicalPathwayManagement"
- style="margin-right: 12px"
- >
- <option
- v-for="(item, index) in dics.getClinicalPathwayManagement"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- 实施DRGs管理:
- <select id="drgsManagement" v-model="patient.drgsManagement">
- <option
- v-for="(item, index) in dics.getDrgsManagement"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- </div>
- <div>
- 抗生素使用:
- <select
- id="useAntibiotic"
- v-model="patient.useAntibiotic"
- style="margin-right: 12px"
- >
- <option
- v-for="(item, index) in yesOrNo"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- 细菌培养标本送检:
- <select
- id="bacilliculture"
- v-model="patient.bacilliculture"
- style="margin-right: 12px"
- >
- <option value="1"> 是 </option>
- <option value="2"> 否 </option>
- </select>
- 法定传染病:
- <select id="statutoryEpidemic" v-model="patient.statutoryEpidemic">
- <option
- v-for="(item, index) in dics.getStatutoryEpidemic"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- </div>
- <div>
- 病例分型:
- <select
- id="caseClassification"
- v-model="patient.caseClassification"
- style="margin-right: 12px"
- >
- <option
- v-for="(item, index) in dics.getCaseClassification"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- 有创呼吸机使用时间:
- <input
- v-model="patient.supplement.ventilatorUseTime"
- type="number"
- style="width: 40px; text-align: center"
- />
- 小时
- <span style="margin-left: 30px">
- 新生儿 5分钟 Apgar评分:
- <input
- style="margin-right: 0; width: 40px; text-align: center"
- v-model="patient.xxeApgar"
- />分
- </span>
- </div>
- <div>
- 住院过程中有无进入重症监护室:
- <select
- v-model="patient.supplement.hadIcu"
- style="width: 40px; margin-right: 30px"
- >
- <option :value="1">有</option>
- <option :value="2">无</option>
- </select>
- 重症监护室名称:
- <select v-model="patient.supplement.icuName" style="width: 150px">
- <option value=""></option>
- <option value="01">CCU-心脏监护室</option>
- <option value="02">RICU-呼吸监护室</option>
- <option value="03">SICU-外科监护室</option>
- <option value="04">NICU-新生儿监护室</option>
- <option value="05">PICU-儿科监护室</option>
- <option value="06">EICU-急诊重症监护室</option>
- <option value="07">MICU-内科重症监护室</option>
- <option value="99">其他</option>
- </select>
- </div>
- <div>
- 进入时间:
- <input
- v-model="patient.supplement.startIcuYear"
- type="number"
- style="width: 40px; text-align: center"
- />
- 年
- <input
- v-model="patient.supplement.startIcuMonth"
- type="number"
- style="width: 20px; text-align: center"
- />
- 月
- <input
- v-model="patient.supplement.startIcuDay"
- type="number"
- style="width: 20px; text-align: center"
- />
- 日
- <input
- v-model="patient.supplement.startIcuHour"
- type="number"
- style="width: 20px; text-align: center"
- />
- 时
- <input
- v-model="patient.supplement.startIcuMinute"
- type="number"
- style="width: 20px; text-align: center"
- />
- 分
- <span style="margin-left: 30px"> 转出时间: </span>
- <input
- v-model="patient.supplement.endIcuYear"
- type="number"
- style="width: 40px; text-align: center"
- />
- 年
- <input
- v-model="patient.supplement.endIcuMonth"
- type="number"
- style="width: 20px; text-align: center"
- />
- 月
- <input
- v-model="patient.supplement.endIcuDay"
- type="number"
- style="width: 20px; text-align: center"
- />
- 日
- <input
- v-model="patient.supplement.endIcuHour"
- type="number"
- style="width: 20px; text-align: center"
- />
- 时
- <input
- v-model="patient.supplement.endIcuMinute"
- type="number"
- style="width: 20px; text-align: center"
- />
- 分
- </div>
- <div>
- 住院过程中是否使用ECMO:
- <select
- v-model="patient.supplement.hadEcmo"
- style="width: 40px; margin-right: 30px"
- >
- <option :value="1">是</option>
- <option :value="2">否</option>
- </select>
- 模式:
- <select
- v-model="patient.supplement.ecmoMode"
- style="width: 50px; margin-right: 30px"
- >
- <option value="V-A">V-A</option>
- <option value="V-V">V-V</option>
- <option value="V-AV">V-AV</option>
- <option value="VV-A">VV-A</option>
- </select>
- 膜肺更换次数:
- <input
- v-model="patient.supplement.memlungChangeTimes"
- type="number"
- style="width: 40px; text-align: center"
- />
- 次
- </div>
- <div>
- 上机时间:
- <input
- v-model="patient.supplement.startEcmoYear"
- type="number"
- style="width: 40px; text-align: center"
- />
- 年
- <input
- v-model="patient.supplement.startEcmoMonth"
- type="number"
- style="width: 20px; text-align: center"
- />
- 月
- <input
- v-model="patient.supplement.startEcmoDay"
- type="number"
- style="width: 20px; text-align: center"
- />
- 日
- <input
- v-model="patient.supplement.startEcmoHour"
- type="number"
- style="width: 20px; text-align: center"
- />
- 时
- <input
- v-model="patient.supplement.startEcmoMinute"
- type="number"
- style="width: 20px; text-align: center"
- />
- 分
- <span style="margin-left: 30px"> 撤机时间: </span>
- <input
- v-model="patient.supplement.endEcmoYear"
- type="number"
- style="width: 40px; text-align: center"
- />
- 年
- <input
- v-model="patient.supplement.endEcmoMonth"
- type="number"
- style="width: 20px; text-align: center"
- />
- 月
- <input
- v-model="patient.supplement.endEcmoDay"
- type="number"
- style="width: 20px; text-align: center"
- />
- 日
- <input
- v-model="patient.supplement.endEcmoHour"
- type="number"
- style="width: 20px; text-align: center"
- />
- 时
- <input
- v-model="patient.supplement.endEcmoMinute"
- type="number"
- style="width: 20px; text-align: center"
- />
- 分
- </div>
- <div>
- 输血品种:红细胞
- <input
- v-model="patient.supplement.erythrocyte"
- type="number"
- style="width: 36px"
- />
- 单位
- <span style="margin-left: 10px"> 血小板 </span>
- <input
- v-model="patient.supplement.platelet"
- type="number"
- style="width: 36px"
- />
- 单位
- <span style="margin-left: 10px"> 血浆 </span>
- <input
- v-model="patient.supplement.plasma"
- type="number"
- style="width: 36px"
- />
- ml
- <span style="margin-left: 10px"> 全血 </span>
- <input
- v-model="patient.supplement.wholeBlood"
- type="number"
- style="width: 36px"
- />
- 单位
- <span style="margin-left: 10px"> 自体血回输 </span>
- <input
- v-model="patient.supplement.autotransfusion"
- type="number"
- style="width: 36px"
- />
- 单位
- </div>
- <div>
- 肿瘤分期: T
- <select
- id="tumorLevelT"
- v-model="patient.tumorLevelT"
- style="margin-right: 12px"
- >
- <option
- v-for="(item, index) in dics.getTumorLevelT"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- N
- <select
- id="tumorLevelN"
- v-model="patient.tumorLevelN"
- style="margin-right: 12px"
- >
- <option
- v-for="(item, index) in dics.getTumorLevelN"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- M
- <select
- id="tumorLevelM"
- v-model="patient.tumorLevelM"
- style="margin-right: 12px"
- >
- <option
- v-for="(item, index) in dics.getTumorLevelM"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- 分期
- <select
- id="tumorLevel"
- v-model="patient.tumorLevel"
- style="margin-right: 18px"
- >
- <option
- v-for="(item, index) in dics.getTumorLevel"
- :key="index"
- :value="item.code"
- >
- {{ item.name }}
- </option>
- </select>
- </div>
- <div>
- 输液输血情况: 1.输液情况:
- <select
- v-model="patient.supplement.infusion"
- style="width: 40px; margin-right: 18px"
- >
- <option :value="1">有</option>
- <option :value="2">无</option>
- </select>
- 2.输液反应:
- <select
- v-model="patient.supplement.infusionReaction"
- style="width: 40px; margin-right: 18px"
- >
- <option :value="1">有</option>
- <option :value="2">无</option>
- </select>
- 3.输血情况:
- <select
- v-model="patient.supplement.transfusion"
- style="width: 40px; margin-right: 18px"
- >
- <option :value="1">有</option>
- <option :value="2">无</option>
- </select>
- 4.输血反应:
- <select
- v-model="patient.supplement.transfusionReaction"
- style="width: 40px; margin-right: 18px"
- >
- <option :value="1">有</option>
- <option :value="2">无</option>
- </select>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div id="headpage" style="opacity: 0; position: fixed">
- <HeadPage :patient="patient" :dics="dics" />
- </div>
- <div id="tailpage" style="opacity: 0; position: fixed">
- <TailPage :patient="patient" :dics="dics" />
- </div>
- <el-drawer
- v-model="showMessageDrawer"
- title="首页保存/打印校验结果"
- size="260px"
- modal-class="modal-class"
- >
- <div class="page-inner">
- <div
- v-if="forceVerifies.length === 0 && adviceVerifies.length === 0"
- class="no-verify-message"
- >
- 暂无校验内容
- </div>
- <div
- v-show="forceVerifies.length > 0"
- style="padding: 8px 0 4px 0; font-weight: bold"
- >
- 以下条目为强制要求,请完善。
- </div>
- <div
- v-for="(item, index) in forceVerifies"
- :key="index"
- class="message-item"
- :style="messageColor(index)"
- @click="handleClickMessage(item.code, index)"
- >
- {{ index + 1 }}、{{ item.name }}
- </div>
- <div
- v-show="adviceVerifies.length > 0"
- style="padding: 8px 0 4px 0; font-weight: bold"
- >
- 以下条目为建议执行,不做强制要求。
- </div>
- <div
- v-for="(item, index) in adviceVerifies"
- :key="index"
- style="
- padding: 6px;
- margin-bottom: 6px;
- border-radius: 4px;
- background: #eea7a752;
- color: #ff2b2b;
- "
- >
- {{ index + 1 }}、{{ item.name }}
- </div>
- </div>
- </el-drawer>
- <div class="rightside-btn" @click="showMessageDrawer = !showMessageDrawer">
- 首页保存 / 打印校验结果
- </div>
- <el-dialog
- v-model="showSelectDateRange"
- title="出院日期"
- width="320px"
- draggable
- >
- <div style="height: 20px"></div>
- 请选择出院日期范围:
- <div style="height: 10px"></div>
- <el-date-picker
- v-model="dateRange"
- type="daterange"
- range-separator="至"
- start-placeholder="开始日期"
- end-placeholder="结束日期"
- :shortcuts="shortcuts"
- style="width: 260px"
- ></el-date-picker>
- <div style="margin: 20px 0 10px 0; width: 100%; text-align: right">
- <el-button type="primary" icon="Check" @click="confirmDateRange"
- >确定
- </el-button>
- </div>
- </el-dialog>
- <el-dialog
- v-model="showYbDiag"
- title="医保出院诊断"
- width="70%"
- top="30px"
- draggable
- >
- <div
- style="
- width: 100%;
- height: 30px;
- line-height: 30px;
- background: rgb(252, 160, 23);
- margin-bottom: 8px;
- border-radius: 8px;
- padding-left: 8px;
- color: white;
- "
- >
- <strong>主要诊断病种分值:{{ diseFamilyGrade }}</strong>
- </div>
- <el-tag type="info">医保诊断录入</el-tag>
- <el-tag style="margin-left: 12px">患者:{{ patient.name }}</el-tag>
- <el-tag style="margin-left: 8px"
- >医疗类别:{{ patient.medTypeName }}
- </el-tag>
- <el-tag style="margin-left: 8px">险种类型:{{ patient.insutype }}</el-tag>
- <div style="height: 5px"></div>
- <el-input
- v-model="ybDiag.name"
- placeholder="在此搜索诊断"
- readonly
- style="width: 160px"
- @click="showSearchData('ybDiag')"
- ></el-input>
- <el-input
- placeholder="诊断编码"
- disabled
- style="width: 100px"
- v-model="ybDiag.code"
- ></el-input>
- <el-select
- v-model="ybDiag.siDiagType"
- style="width: 100px"
- placeholder="诊断类别"
- >
- <el-option
- v-for="item in diagTypes"
- :key="item.code"
- :value="item.code"
- :label="item.name"
- ></el-option>
- </el-select>
- <el-select
- v-model="ybDiag.admissCond"
- style="width: 100px"
- placeholder="入院病情"
- >
- <el-option
- v-for="item in admissConds"
- :key="item.code"
- :value="item.code"
- :label="item.name"
- ></el-option>
- </el-select>
- <el-select
- v-model="ybDiag.cyzg"
- style="width: 120px"
- placeholder="出院转归"
- >
- <el-option
- v-for="item in cyzgs"
- :key="item.code"
- :value="item.code"
- :label="item.name"
- ></el-option>
- </el-select>
- <el-divider direction="vertical"></el-divider>
- <el-button type="primary" icon="Plus" @click="addToYbDiags">添加</el-button>
- <el-button type="success" icon="Upload" @click="saveYbDiags"
- >保存
- </el-button>
- <el-table :data="ybDiags" stripe :height="200">
- <el-table-column type="index" label="序号" width="45"></el-table-column>
- <el-table-column prop="code" label="诊断编码"></el-table-column>
- <el-table-column prop="name" label="诊断名称"></el-table-column>
- <el-table-column
- prop="siDiagType"
- label="诊断类别"
- width="80"
- ></el-table-column>
- <el-table-column
- prop="admissCond"
- label="入院病情"
- width="80"
- ></el-table-column>
- <el-table-column
- prop="cyzg"
- label="出院转归"
- width="80"
- ></el-table-column>
- <el-table-column
- prop="operId"
- label="录入人"
- width="70"
- ></el-table-column>
- <el-table-column prop="opDate" label="录入日期"></el-table-column>
- <el-table-column label="操作">
- <template #default="scope">
- <el-button
- type="danger"
- icon="Delete"
- @click="deleteYbDiag(scope.$index)"
- >删除
- </el-button>
- </template>
- </el-table-column>
- </el-table>
- <div style="height: 12px"></div>
- <el-tag type="info">病案首页诊断信息</el-tag>
- <el-table :data="filterDisDiagList" stripe :height="200">
- <el-table-column type="index" label="序号" width="45"></el-table-column>
- <el-table-column prop="code" label="诊断编码"></el-table-column>
- <el-table-column prop="name" label="诊断名称"></el-table-column>
- <el-table-column label="出院病情">
- <template #default="scope">
- {{ filterDismissStatus(scope.row.dismissStatus) }}
- </template>
- </el-table-column>
- <el-table-column label="操作">
- <template #default="scope">
- <el-button
- icon="Link"
- title="添加到医保诊断"
- circle
- @click="syncronizeWithSiDiagnose(scope.row.code)"
- ></el-button>
- </template>
- </el-table-column>
- </el-table>
- </el-dialog>
- <el-dialog v-model="showSearch" title="数据搜索" width="730px" draggable>
- 检索依据:
- <el-select v-model="searchMethod" style="width: 100px">
- <el-option
- v-for="item in searchMethods"
- :key="item.code"
- :label="item.name"
- :value="item.code"
- ></el-option>
- </el-select>
- 搜索内容:
- <el-input
- ref="searchInput"
- v-model="searchContent"
- prefix-icon="Search"
- placeholder="请输入搜索内容"
- style="width: 160px"
- clearable
- @input="executeSearch"
- ></el-input>
- <div
- v-if="showSurgeryRecommand"
- style="padding: 12px 0 4px 4px; color: gray"
- >
- 根据患者主诊断
- <el-tag
- >{{ patient.disdiagList[0].code }}
- <span style="color: blue">{{ patient.disdiagList[0].name }}</span>
- </el-tag>
- ,推荐以下手术操作:
- </div>
- <el-table
- :data="searchResults"
- height="400"
- stripe
- highlight-current-row
- @row-click="handleSelectSearch"
- >
- <el-table-column prop="code" label="编码" width="130"></el-table-column>
- <el-table-column prop="name" label="名称"></el-table-column>
- <el-table-column
- v-if="searchUrl === 'employee'"
- prop="deptName"
- label="科室"
- ></el-table-column>
- <el-table-column
- v-if="searchUrl === 'employee'"
- prop="ybCode"
- label="医保赋码"
- ></el-table-column>
- <el-table-column
- v-if="showSurgeryRecommand"
- prop="ssfz"
- label="手术分值"
- width="60"
- ></el-table-column>
- </el-table>
- <div style="margin-top: 15px; width: 100%; text-align: right">
- <el-button
- type="primary"
- icon="ArrowLeft"
- @click="lastPage"
- :disabled="showSurgeryRecommand || currentSRPage === 1"
- >
- 上一页
- </el-button>
- <el-button
- type="primary"
- icon="ArrowRight"
- @click="nextPage"
- :disabled="
- showSurgeryRecommand ||
- (currentSRPage > 1 && searchResults.length < 10)
- "
- >
- 下一页
- </el-button>
- </div>
- </el-dialog>
- <el-dialog
- v-model="showSurgeryDatetime"
- title="请选择手术时间"
- width="330px"
- draggable
- >
- <div style="height: 12px"></div>
- <el-date-picker
- v-model="surgeryDatetime"
- type="datetime"
- placeholder="手术开始时间"
- ></el-date-picker>
- <div style="height: 12px"></div>
- <el-date-picker
- v-model="opEndDate"
- type="datetime"
- placeholder="手术结束时间"
- ></el-date-picker>
- <div style="margin: 12px 0 8px 0; font-size: 14px; color: red">
- 提示:有麻醉(局麻除外)的患者需要填写麻醉时间,否则最终校验无法通过!
- </div>
- <el-date-picker
- v-model="anstStartDate"
- type="datetime"
- placeholder="麻醉开始时间"
- ></el-date-picker>
- <div style="height: 12px"></div>
- <el-date-picker
- v-model="anstEndDate"
- type="datetime"
- placeholder="麻醉结束时间"
- ></el-date-picker>
- <template #footer>
- <div>
- <el-button type="primary" icon="Success" @click="confirmSurgeryDatetime"
- >确定
- </el-button>
- </div>
- </template>
- </el-dialog>
- </template>
- <script setup name="FillCaseFrontSheet">
- import {
- autopsies,
- clone,
- filterDismissStatus,
- haveOrNot,
- initShowDel,
- searchMethods,
- yesOrNo,
- } from "./common";
- import { operations } from "@/data";
- import { getLodop, initLodop } from "@/utils/c-lodop";
- import {
- doSaveYbDiags,
- executePrintVerify,
- executeSaveVerify,
- fetchAuditCount,
- fetchOutPatients,
- fetchSsfz,
- getAllDictionary,
- getPatientOverview,
- getSheetInfo,
- getSsfzSurgeriesByIcd,
- getUserWards,
- getYbDiags,
- increaseDiagWeight,
- isMedinsSetl,
- selectSiDiagByBaDiag,
- sheetSearch,
- submitQualityVerification,
- } from "@/api/case-front-sheet";
- import maleIcon from "@/assets/male-icon.png";
- import femaleIcon from "@/assets/female-icon.png";
- import {ElMessage, ElMessageBox} from "element-plus";
- import { shortcuts } from "@/data/shortcuts";
- import {
- formatDate,
- formatDatetime,
- getDatetime,
- getOneMonthOffset,
- } from "@/utils/date";
- import HeadPage from "../../../components/inpatient/frontsheet-printpage/HeadPage.vue";
- import TailPage from "../../../components/inpatient/frontsheet-printpage/TailPage.vue";
- import router from "@/router/index";
- import Sleep from "@/utils/sleep";
- import { smoothScrollTableColumn } from "@/utils/el-table-scroll";
- import { regions } from "@/data/region";
- import { CyMessageBox } from "@/utils/cy-message-box";
- import { xcMessage } from "@/utils/xiaochan-element-plus";
- import AuditHistory from "@/components/inpatient/frontsheet-printpage/AuditHistory.vue";
- import { useUserStore } from "@/pinia/user-store";
- import HistorySheetExport from "@/views/hospitalization/case-front-sheet/component/HistorySheetExport.vue";
- import { useDialog } from "@/components/cy/CyDialog/index";
- import env from "../../../utils/setting";
- import {isNumeric} from "@/utils/validate.js";
- const userStore = useUserStore();
- const userWards = ref([]);
- const currentWard = ref("");
- const inOutStatus = ref(1);
- const inOutOptions = initInOutOptions();
- const inpatientNo = ref("");
- const onlyShowMyPatients = ref(false);
- const overview = ref([]);
- const patient = ref({
- disdiagList: [
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- {},
- ],
- surgeryList: [{}, {}, {}, {}, {}],
- supplement: {},
- });
- const defaultSurgerySize = ref(5);
- const dics = ref({});
- const showGoSearchBtn1 = ref(false);
- const showGoSearchBtn2 = ref(false);
- const showDel = initShowDel();
- const asideTable = ref(null);
- function addSurgeSize() {
- patient.value.surgeryList.push({});
- defaultSurgerySize.value += 1;
- }
- const cptOverviews = computed(() => {
- return overview.value.filter(item => {
- if (onlyShowMyPatients.value) {
- return item.doctorCode === userStore.userInfo.code;
- }
- return true;
- });
- });
- const filterDisDiagList = computed(() => {
- return patient.value.disdiagList.filter(item => {
- return item.code && item.name;
- });
- });
- const searchPatient = () => {
- if (!inpatientNo.value || inpatientNo.value.trim().length < 1) {
- ElMessage({
- message: "请输入要搜索的住院号",
- type: "warning",
- duration: 2500,
- showClose: true,
- });
- return;
- }
- const patientIndex = overview.value.findIndex(item => {
- return item.bah === inpatientNo.value.trim();
- });
- if (patientIndex === -1) {
- ElMessage({
- message: "未找到住院号【" + inpatientNo.value.trim() + "】的患者信息",
- type: "warning",
- duration: 2500,
- showClose: true,
- });
- } else {
- const currentPatient = overview.value[patientIndex];
- handleClickOverview(currentPatient);
- smoothScrollTableColumn(asideTable.value, patientIndex, currentPatient);
- }
- };
- const handleWardChange = () => {
- if (inOutStatus.value === 1) {
- fetchOverview();
- } else {
- confirmDateRange();
- }
- };
- const dateRange = ref([]);
- const showSelectDateRange = ref(false);
- const changeInOutStatus = () => {
- if (inOutStatus.value === 1) {
- fetchOverview();
- } else {
- if (!dateRange.value || dateRange.value.length < 2) {
- const oneMonth = getOneMonthOffset();
- dateRange.value[0] = oneMonth.start;
- dateRange.value[1] = oneMonth.end;
- }
- showSelectDateRange.value = true;
- }
- };
- const confirmDateRange = () => {
- if (!dateRange.value || dateRange.value.length < 2) {
- ElMessage({
- message: "请选择时间范围",
- type: "warning",
- duration: 2500,
- showClose: true,
- });
- return;
- }
- const param = {
- ward: currentWard.value,
- start: formatDate(dateRange.value[0]),
- end: formatDate(dateRange.value[1]),
- };
- fetchOutPatients(param).then(res => {
- overview.value = res;
- showSelectDateRange.value = false;
- });
- };
- const fetchOverview = () => {
- getPatientOverview(currentWard.value).then(res => {
- overview.value = res;
- });
- };
- const currentRow = ref({});
- const handleClickOverview = row => {
- currentRow.value = row;
- fetchSheetInfo(row);
- };
- const fetchSheetInfo = row => {
- if (
- row.bah !== patient.value.bah ||
- row.times !== patient.value.admissTimes
- ) {
- forceVerifies.value = [];
- adviceVerifies.value = [];
- }
- row.inOutFlag = inOutStatus.value;
- getSheetInfo(row).then(res => {
- patient.value = res;
- let s = res.surgeryList.length;
- defaultSurgerySize.value = s > 5 ? s : 5;
- patient.value.bedNo = row.bedNo;
- patient.value.sex = row.sex;
- });
- };
- const currentSRPage = ref(1);
- const showSearch = ref(false);
- const insertDiag = ref(false);
- watchEffect(() => {
- if (showSearch.value) {
- searchResults.value = [];
- setTimeout(() => {
- showDel.value = initShowDel();
- searchInput.value.focus();
- }, 300);
- } else {
- insertDiag.value = false;
- }
- });
- const searchInput = ref(null);
- const searchUrl = ref("");
- const searchTargetCode = ref("");
- const searchTargetName = ref("");
- const searchContent = ref("");
- const lastPage = () => {
- currentSRPage.value--;
- fetchSearchData();
- };
- const nextPage = () => {
- currentSRPage.value++;
- fetchSearchData();
- };
- const fetchSearchData = () => {
- const param = {
- patNo: patient.value.bah,
- times: patient.value.admissTimes,
- method: searchMethod.value,
- target: searchUrl.value,
- content: searchContent.value,
- medType: patient.value.medType,
- page: currentSRPage.value,
- };
- sheetSearch(param).then(res => {
- searchResults.value = res;
- });
- };
- const executeSearch = () => {
- showSurgeryRecommand.value = false;
- if (
- mainSurgeryFocused.value &&
- searchContent.value === "" &&
- patient.value.disdiagList[0].code
- ) {
- getSsfzSurgeriesByIcd(
- patient.value.bah,
- patient.value.admissTimes,
- patient.value.disdiagList[0].code
- ).then(res => {
- searchResults.value = res;
- showSurgeryRecommand.value = true;
- });
- return;
- }
- if (searchContent.value.length < 2) return;
- currentSRPage.value = 1;
- fetchSearchData();
- };
- const showYbDiag = ref(false);
- const openYbDiag = () => {
- if (nullPatient()) {
- return;
- }
- if (!patient.value.medType) {
- ElMessage({
- message: "自费病人无需填写医保诊断",
- type: "warning",
- duration: 2500,
- showClose: true,
- });
- return;
- }
- getYbDiags(patient.value.bah, patient.value.admissTimes).then(res => {
- ybDiags.value = res;
- showYbDiag.value = true;
- });
- };
- const searchMethod = ref("alpha");
- const searchResults = ref([]);
- const showSearchData = flag => {
- mainSurgeryFocused.value = false;
- showSurgeryRecommand.value = false;
- searchUrl.value = "place";
- if (flag === "birth") {
- searchTargetCode.value = "birthPlace";
- searchTargetName.value = "birthPlaceName";
- } else if (flag === "native") {
- searchTargetCode.value = "nativePlace";
- searchTargetName.value = "nativePlaceName";
- } else if (flag === "hk") {
- searchTargetCode.value = "hkPlace";
- searchTargetName.value = "hkPlaceName";
- } else if (flag === "contact") {
- searchTargetCode.value = "contactAddr";
- searchTargetName.value = "contactAddrName";
- } else if (flag === "hurt") {
- searchUrl.value = "hurtReason";
- searchTargetCode.value = "hurtReasonCode";
- searchTargetName.value = "hurtReasonName";
- } else if (flag === "pathologic") {
- searchUrl.value = "pathologicDiag";
- searchTargetCode.value = "pathologicDiagCode";
- searchTargetName.value = "pathologicDiagStr";
- } else if (flag === "deptleader") {
- searchUrl.value = "employee";
- searchTargetCode.value = "deptLeader";
- searchTargetName.value = "deptLeaderName";
- } else if (flag === "leaderdoctor") {
- searchUrl.value = "employee";
- searchTargetCode.value = "leaderDoctor";
- searchTargetName.value = "leaderDoctorName";
- } else if (flag === "maindoctor") {
- searchUrl.value = "employee";
- searchTargetCode.value = "mainDoctor";
- searchTargetName.value = "mainDoctorName";
- } else if (flag === "admissdoctor") {
- searchUrl.value = "employee";
- searchTargetCode.value = "admissDoctor";
- searchTargetName.value = "admissDoctorName";
- } else if (flag === "dutynurse") {
- searchUrl.value = "employee";
- searchTargetCode.value = "dutyNurse";
- searchTargetName.value = "dutyNurseName";
- } else if (flag === "studydoctor") {
- searchUrl.value = "employee";
- searchTargetCode.value = "studyDoctor";
- searchTargetName.value = "studyDoctorName";
- } else if (flag === "internshipdoctor") {
- searchUrl.value = "employee";
- searchTargetCode.value = "internshipDoctor";
- searchTargetName.value = "internshipDoctorName";
- } else if (flag === "coder") {
- searchUrl.value = "employee";
- searchTargetCode.value = "coder";
- searchTargetName.value = "coderName";
- } else if (flag === "qualitycontroldoctor") {
- searchUrl.value = "employee";
- searchTargetCode.value = "qualityControlDoctor";
- searchTargetName.value = "qualityControlDoctorName";
- } else if (flag === "qualitycontrolnurse") {
- searchUrl.value = "employee";
- searchTargetCode.value = "qualityControlNurse";
- searchTargetName.value = "qualityControlNurseName";
- } else if (flag === "ybDiag") {
- searchUrl.value = "diag";
- searchTargetCode.value = "ybDiagCode";
- } else if (flag === "clinicdiag") {
- searchUrl.value = "clinicdiag";
- searchTargetCode.value = "clinicDiagCode";
- searchTargetName.value = "clinicDiagStr";
- } else if (flag === "admdiag") {
- searchUrl.value = "clinicdiag";
- searchTargetCode.value = "admDiagCode";
- searchTargetName.value = "admDiagStr";
- }
- showSearch.value = true;
- };
- const showSurgeryDatetime = ref(false);
- const surgeryDatetime = ref(null);
- const opEndDate = ref(null);
- const anstStartDate = ref(null);
- const anstEndDate = ref(null);
- const currentSurgeryDatetimeIndex = ref(null);
- const showPickSurgeryDatetime = index => {
- currentSurgeryDatetimeIndex.value = index;
- let surgery = patient.value.surgeryList[index];
- surgeryDatetime.value = surgery.date;
- opEndDate.value = surgery.opEndDate;
- anstStartDate.value = surgery.anstStartDate;
- anstEndDate.value = surgery.anstEndDate;
- showSurgeryDatetime.value = true;
- };
- const confirmSurgeryDatetime = () => {
- if (!surgeryDatetime.value) {
- ElMessage({
- message: "手术开始时间不能为空!",
- type: "warning",
- duration: 2500,
- showClose: true,
- });
- return;
- }
- if (!opEndDate.value) {
- ElMessage({
- message: "手术结束时间不能为空!",
- type: "warning",
- duration: 2500,
- showClose: true,
- });
- return;
- }
- patient.value.surgeryList[currentSurgeryDatetimeIndex.value].date =
- formatDatetime(surgeryDatetime.value);
- patient.value.surgeryList[currentSurgeryDatetimeIndex.value].opEndDate =
- formatDatetime(opEndDate.value);
- patient.value.surgeryList[currentSurgeryDatetimeIndex.value].anstStartDate =
- formatDatetime(anstStartDate.value);
- patient.value.surgeryList[currentSurgeryDatetimeIndex.value].anstEndDate =
- formatDatetime(anstEndDate.value);
- showSurgeryDatetime.value = false;
- };
- const showSearchSurgerior = (flag, index) => {
- mainSurgeryFocused.value = false;
- showSurgeryRecommand.value = false;
- if (flag === "operator") {
- searchTargetCode.value = "surgeryOperatorCode" + (index - 1);
- searchTargetName.value = "surgeryOperatorName" + (index - 1);
- } else if (flag === "assistantone") {
- searchTargetCode.value = "surgeryAssistantOneCode" + (index - 1);
- searchTargetName.value = "surgeryAssistantOneName" + (index - 1);
- } else if (flag === "assistanttwo") {
- searchTargetCode.value = "surgeryAssistantTwoCode" + (index - 1);
- searchTargetName.value = "surgeryAssistantTwoName" + (index - 1);
- } else {
- searchTargetCode.value = "surgeryAnaesthesiaorCode" + (index - 1);
- searchTargetName.value = "surgeryAnaesthesiaorName" + (index - 1);
- }
- searchUrl.value = "employee";
- showSearch.value = true;
- };
- const diseFamilyGrade = ref(null);
- const ybDiag = reactive({});
- const cyzgs = initCyzgs();
- const admissConds = initAdmissConds();
- const diagTypes = initDiagTypes();
- const handleSelectSearch = item => {
- if (searchTargetCode.value.startsWith("surgery")) {
- let offset = defaultSurgerySize.value > 10 ? 2 : 1;
- let no = searchTargetCode.value.substr(
- searchTargetCode.value.length - offset
- );
- if (!isNumeric(no)) {
- offset = 1
- no = searchTargetCode.value.substr(
- searchTargetCode.value.length - offset
- );
- }
- switch (
- searchTargetCode.value.substr(0, searchTargetCode.value.length - offset)
- ) {
- case "surgeryCode":
- if (no > 0) {
- patient.value.surgeryList[no] = clone(
- patient.value.surgeryList[no - 1]
- );
- }
- patient.value.surgeryList[no].no = no;
- patient.value.surgeryList[no].name = item.name;
- patient.value.surgeryList[no].code = item.code;
- patient.value.surgeryList[no].level = item.opScale;
- break;
- case "surgeryOperatorCode":
- patient.value.surgeryList[no].operator = item.code;
- patient.value.surgeryList[no].operatorName = item.name;
- break;
- case "surgeryAssistantOneCode":
- patient.value.surgeryList[no].assistantOne = item.code;
- patient.value.surgeryList[no].assistantOneName = item.name;
- break;
- case "surgeryAssistantTwoCode":
- patient.value.surgeryList[no].assistantTwo = item.code;
- patient.value.surgeryList[no].assistantTwoName = item.name;
- break;
- case "surgeryAnaesthesiaorCode":
- patient.value.surgeryList[no].anaesthesiaor = item.code;
- patient.value.surgeryList[no].anaesthesiaorName = item.name;
- break;
- }
- } else if (searchTargetCode.value.startsWith("disdiags")) {
- let no = Number(searchTargetCode.value.replace("disdiagsCode", ""));
- if (insertDiag.value) {
- for (let i = 26; i > no; i--) {
- patient.value.disdiagList[i] = clone(patient.value.disdiagList[i - 1]);
- }
- patient.value.disdiagList.splice(27);
- insertDiag.value = false;
- }
- patient.value.disdiagList[no].code = item.code;
- patient.value.disdiagList[no].name = item.name;
- patient.value.disdiagList[no].no = no;
- patient.value.disdiagList[no].admissStatus = patient.value.disdiagList[
- no
- ].dismissStatus = "1";
- patient.value.disdiagList[no].opIdCode = userStore.userInfo.code;
- increaseDiagWeight(item.code);
- } else if (searchTargetCode.value === "ybDiagCode") {
- ybDiag.code = item.code;
- ybDiag.name = item.name;
- ybDiag.cyzg = 0;
- ybDiag.siDiagType = 1;
- if (!ybDiags.value || ybDiags.value.length === 0) {
- fetchSsfz(item.code, patient.value.bah, patient.value.admissTimes).then(
- res => {
- diseFamilyGrade.value = res;
- }
- );
- }
- } else if (searchTargetCode.value === "clinicDiagCode") {
- patient.value.clinicDiagCode = item.code;
- patient.value.clinicDiagStr = item.name;
- } else if (searchTargetCode.value === "admDiagCode") {
- patient.value.supplement.admDiagCode = item.code;
- patient.value.supplement.admDiagName = item.name;
- } else {
- if (needDorSiCode.indexOf(searchTargetCode.value) > -1) {
- if (!item.ybCode.startsWith("D")) {
- ElMessage({
- message: "医师医保编码首字母为D,请重新选择。",
- type: "warning",
- showClose: true,
- duration: 2500,
- });
- return;
- }
- }
- if (searchTargetCode.value === "dutyNurse") {
- if (!item.ybCode.startsWith("N")) {
- ElMessage({
- message: "护士医保编码首字母为N,请重新选择。",
- type: "warning",
- showClose: true,
- duration: 2500,
- });
- return;
- }
- }
- patient.value[searchTargetCode.value] = item.code;
- patient.value[searchTargetName.value] = item.name;
- if (searchTargetCode.value === "birthPlace") {
- patient.value.nativePlace = item.code;
- patient.value.nativePlaceName = item.name;
- }
- }
- searchContent.value = "";
- showSearch.value = false;
- };
- const needDorSiCode = [
- "deptLeader",
- "leaderDoctor",
- "mainDoctor",
- "admissDoctor",
- ];
- const syncronizeWithSiDiagnose = code => {
- selectSiDiagByBaDiag(code).then(res => {
- ybDiag.code = res.code;
- ybDiag.name = res.name;
- ybDiag.cyzg = 0;
- ybDiag.siDiagType = 1;
- if (!ybDiags.value || ybDiags.value.length === 0) {
- fetchSsfz(res.code, patient.value.bah, patient.value.admissTimes).then(
- res2 => {
- diseFamilyGrade.value = res2;
- }
- );
- }
- });
- };
- const clearLine = option => {
- switch (option) {
- case "hurtReason":
- patient.value.hurtReasonName = null;
- patient.value.hurtReasonCode = null;
- break;
- case "pathologicDiag":
- patient.value.pathologicDiagStr = null;
- patient.value.pathologicDiagCode = null;
- patient.value.blh = null;
- break;
- }
- };
- const ybDiags = ref([]);
- const addToYbDiags = () => {
- if (!ybDiag.siDiagType) {
- ElMessage({
- message: "请选择诊断类别!",
- type: "warning",
- duration: 2500,
- showClose: true,
- });
- return;
- }
- if (!ybDiag.admissCond) {
- ElMessage({
- message: "请选择入院病情!",
- type: "warning",
- duration: 2500,
- showClose: true,
- });
- return;
- }
- const temp = clone(ybDiag);
- temp.diagType = 13;
- temp.operId = userStore.userInfo.code;
- temp.opDate = getDatetime();
- temp.bzfx = "普通";
- ybDiags.value.push(temp);
- ybDiag.code = ybDiag.name = ybDiag.cyzg = "";
- };
- const deleteYbDiag = index => {
- ybDiags.value.splice(index, 1);
- };
- const saveYbDiags = () => {
- const param = {
- bah: patient.value.bah,
- times: patient.value.admissTimes,
- ybDiags: ybDiags.value,
- };
- doSaveYbDiags(param).then(() => {
- ElMessage({
- message: "保存成功",
- type: "success",
- duration: 2500,
- showClose: true,
- });
- });
- };
- const onSearchDiagFocus = n => {
- mainSurgeryFocused.value = false;
- showSurgeryRecommand.value = false;
- if (n > 0 && !patient.value.disdiagList[n - 1].code) {
- ElMessage({
- message: "请按顺序填写",
- type: "warning",
- duration: 2500,
- showClose: true,
- });
- return;
- }
- searchUrl.value = "normalDiag";
- searchTargetCode.value = "disdiagsCode" + n;
- searchTargetName.value = "disdiagsName" + n;
- if (!patient.value.disdiagList[n].code) {
- showSearch.value = true;
- } else {
- showDel.value[n] = true;
- }
- };
- const showSurgeryRecommand = ref(false);
- const mainSurgeryFocused = ref(false);
- const onSearchSurgeryFocus = n => {
- if (n > 0 && !patient.value.surgeryList[n - 1].code) {
- ElMessage({
- message: "请按顺序填写",
- type: "warning",
- duration: 2500,
- showClose: true,
- });
- return;
- }
- mainSurgeryFocused.value = false;
- showSurgeryRecommand.value = false;
- searchUrl.value = "surgery";
- searchTargetCode.value = "surgeryCode" + n;
- searchTargetName.value = "surgeryName" + n;
- if (!patient.value.surgeryList[n].code) {
- if (n === 0 && patient.value.disdiagList[0].code) {
- mainSurgeryFocused.value = true;
- getSsfzSurgeriesByIcd(
- patient.value.bah,
- patient.value.admissTimes,
- patient.value.disdiagList[0].code
- ).then(res => {
- searchResults.value = res;
- showSurgeryRecommand.value = true;
- });
- }
- showSearch.value = true;
- } else {
- showDel.value[n] = true;
- }
- };
- const onEditSurgeryClick = n => {
- showSearch.value = true;
- if (n === 0 && patient.value.disdiagList[0].code) {
- mainSurgeryFocused.value = true;
- getSsfzSurgeriesByIcd(
- patient.value.bah,
- patient.value.admissTimes,
- patient.value.disdiagList[0].code
- ).then(res => {
- searchResults.value = res;
- showSurgeryRecommand.value = true;
- });
- } else {
- mainSurgeryFocused.value = false;
- showSurgeryRecommand.value = false;
- }
- };
- const hasSurgeryChanged = val => {
- if (val === "0") {
- patient.value.diagConform3 = 0;
- }
- };
- const deleteDisdiag = index => {
- showDel.value[index] = false;
- while (index < 26) {
- patient.value.disdiagList[index] = patient.value.disdiagList[index + 1];
- index++;
- }
- patient.value.disdiagList[26] = {};
- patient.value.disdiagList.splice(27);
- };
- const insertDisdiag = index => {
- mainSurgeryFocused.value = false;
- showSurgeryRecommand.value = false;
- insertDiag.value = true;
- searchUrl.value = "normalDiag";
- searchTargetCode.value = "disdiagsCode" + index;
- searchTargetName.value = "disdiagsName" + index;
- showSearch.value = true;
- };
- function changeSurgeryOrder(currentIndex, newIndex) {
- let temp = patient.value.surgeryList[currentIndex];
- patient.value.surgeryList[currentIndex] = patient.value.surgeryList[newIndex];
- patient.value.surgeryList[newIndex] = temp;
- }
- const deleteSurgery = index => {
- showDel.value[index] = false;
- while (index < defaultSurgerySize.value - 1) {
- patient.value.surgeryList[index] = patient.value.surgeryList[index + 1];
- index++;
- }
- patient.value.surgeryList[defaultSurgerySize.value - 1] = {};
- patient.value.surgeryList.splice(defaultSurgerySize.value);
- if (defaultSurgerySize.value > 5) {
- defaultSurgerySize.value -= 1;
- }
- };
- const deleteAssistantOne = index => {
- patient.value.surgeryList[index].assistantOne = "";
- patient.value.surgeryList[index].assistantOneName = "";
- };
- const deleteAssistantTwo = index => {
- patient.value.surgeryList[index].assistantTwo = "";
- patient.value.surgeryList[index].assistantTwoName = "";
- };
- const deleteAnestor = index => {
- patient.value.surgeryList[index].anaesthesiaor = "";
- patient.value.surgeryList[index].anaesthesiaorName = "";
- };
- const nullPatient = () => {
- if (!patient.value.bah) {
- ElMessage({
- message: "请先选择患者!",
- type: "warning",
- duration: 2500,
- showClose: true,
- });
- return true;
- }
- return false;
- };
- const forceVerifies = ref([]);
- const adviceVerifies = ref([]);
- const currentMessageIndex = ref(null);
- const messageColor = id => {
- return currentMessageIndex.value === id
- ? {
- background: "#ff2b2b",
- color: "white",
- }
- : {
- background: "#eea7a752",
- color: "#ff2b2b",
- };
- };
- const scrollWrapper = ref(null);
- const handleClickMessage = (id, index) => {
- currentMessageIndex.value = index;
- let ele = document.getElementById(id);
- scrollWrapper.value.scrollTop = ele.offsetTop - 260;
- let i = 0;
- let timer = setInterval(() => {
- ele.style.background = i % 2 === 0 ? "rgb(238, 98, 5)" : "transparent";
- i++;
- if (i > 7) {
- clearInterval(timer);
- }
- }, 500);
- };
- const showMessageDrawer = ref(false);
- const setlUplaodClick = () => {
- if (nullPatient()) return;
- isMedinsSetl(patient.value.bah, patient.value.admissTimes).then(() => {
- router.push(
- "/inpatient/casefrntsht/drgCoding/" +
- patient.value.bah +
- "/" +
- patient.value.admissTimes
- );
- });
- };
- const saveVerify = opType => {
- if (nullPatient()) return;
- fetchAuditCount({
- patNo: patient.value.bah,
- times: patient.value.admissTimes,
- }).then(res => {
- if (res.approved > 0) {
- xcMessage.error("此患者病案首页质控审核已通过,无法保存。");
- return;
- }
- executeSaveVerify({
- opType,
- sheet: patient.value,
- })
- .then(() => {
- ElMessage({
- message: "操作成功。",
- type: "success",
- duration: 2500,
- showClose: true,
- });
- })
- .catch(e => {
- forceVerifies.value = e.data;
- showMessageDrawer.value = true;
- });
- });
- };
- function sheetQualityVerification(command) {
- if (command === "applyVerification") {
- beforeSubmitAudit();
- } else {
- useDialog(AuditHistory, {
- dialogProps: { title: "质控记录" },
- showFooter: false,
- params: {
- patinfo: {
- patNo: patient.value.bah,
- times: patient.value.admissTimes,
- },
- },
- });
- }
- }
- function beforeSubmitAudit() {
- if (nullPatient()) {
- return;
- }
- fetchAuditCount({
- patNo: patient.value.bah,
- times: patient.value.admissTimes,
- }).then(res => {
- if (res.approved > 0) {
- xcMessage.error("此患者的质控审核已通过,无需再次申请。");
- return;
- }
- if (res.initial > 0) {
- xcMessage.error("此患者有未被处理的质控审核,请勿重复提交。");
- return;
- }
- executePrintVerify({
- sheet: patient.value,
- })
- .then(() => {
- submitAuditConfirm();
- })
- .catch(e => {
- forceVerifies.value = e.data.force;
- adviceVerifies.value = e.data.advice;
- showMessageDrawer.value = true;
- if (e.data.force.length === 0) {
- submitAuditConfirm();
- }
- });
- });
- }
- function submitAuditConfirm() {
- CyMessageBox.confirm({
- type: "warning",
- title: "提示",
- message: `质控审核通过后,病案将进入锁定状态,无法再次修改。确定要提交质控审核吗?`,
- })
- .then(() => {
- executeSubmitAudit();
- })
- .catch(() => {});
- }
- function executeSubmitAudit() {
- const params = {
- patNo: patient.value.bah,
- times: patient.value.admissTimes,
- patName: patient.value.name,
- patGender: filterPatGender(),
- disDeptCode: patient.value.dismissDeptCode,
- disDeptName: patient.value.dismissDept,
- };
- submitQualityVerification(params).then(() => {
- xcMessage.success("提交成功");
- if (inOutStatus === 2) {
- CyMessageBox.confirm({
- type: "warning",
- title: "提示",
- message: "是否申请医保结算清单质控?",
- }).then(() => {
- setlUplaodClick();
- });
- }
- });
- }
- function filterPatGender() {
- if (patient.value.sex === 1 || patient.value.sex === "1") {
- return "MALE";
- }
- if (patient.value.sex === 2 || patient.value.sex === "2") {
- return "FEMALE";
- }
- return "UNKNOWN";
- }
- const dismissShowSearch = flag => {
- setTimeout(() => {
- if (flag === 1) {
- showGoSearchBtn1.value = false;
- } else {
- showGoSearchBtn2.value = false;
- }
- }, 100);
- };
- const beforePrint = page => {
- if (nullPatient()) return;
- fetchAuditCount({
- patNo: patient.value.bah,
- times: patient.value.admissTimes,
- }).then(res => {
- if (res.approved > 0) {
- execPrint(page);
- } else {
- ElMessageBox.confirm('病案首页质控审核未通过,是否继续打印?', '提示', {
- type: "warning",
- }).then(() => {
- execPrint(page)
- }).catch(() => {})
- }
- });
- };
- const execPrint = page => {
- const LODOP = getLodop();
- const prntStyle = `<style>*{font-size:10pt} table,th,td {border: 1px solid black;border-collapse: collapse;} td,th {height: 24px;padding-left: 4px;}</style>`;
- const prntContent =
- page === 1
- ? document.getElementById("headpage").innerHTML
- : document.getElementById("tailpage").innerHTML;
- let pagePrint = prntStyle + "<body>" + prntContent + "</body>";
- LODOP.PRINT_INIT("casefrontsheet");
- LODOP.SET_PRINT_PAGESIZE(1, "210mm", "297mm", "");
- LODOP.SET_PRINT_MODE("FULL_WIDTH_FOR_OVERFLOW", true); // 整宽不变形
- LODOP.ADD_PRINT_HTM("2mm", "5mm", "100%", "100%", pagePrint);
- LODOP.SET_PRINT_STYLE("ItemType", 3);
- LODOP.PREVIEW();
- };
- onActivated(async () => {
- const params = router.currentRoute.value.query;
- if (params && params.patNo && params.deptCode) {
- await Sleep(300);
- if (params.times && params.disdate) {
- dateRange.value[0] = params.disdate;
- dateRange.value[1] = params.disdate;
- inOutStatus.value = 2;
- } else {
- inOutStatus.value = 1;
- }
- inpatientNo.value = params.patNo;
- currentWard.value = params.deptCode;
- handleWardChange();
- await Sleep(500);
- searchPatient();
- }
- });
- function showExportPanel() {
- useDialog(HistorySheetExport, {
- dialogProps: {
- title: "历史病案导出",
- width: "600px",
- },
- confirmText: "导出",
- });
- }
- onMounted(() => {
- scrollWrapper.value = document.getElementById("scrollWrapper");
- initLodop();
- getAllDictionary().then(res => {
- res.getOperations = operations;
- res.getYesOrNo = yesOrNo;
- res.getHaveOrNot = haveOrNot;
- res.getAutopsies = autopsies;
- dics.value = res;
- });
- getUserWards().then(res => {
- userWards.value = res;
- if (res.length > 0) {
- currentWard.value = res[0].code;
- fetchOverview();
- }
- });
- });
- function initInOutOptions() {
- return [
- { code: 1, name: "在院" },
- { code: 2, name: "出院" },
- ];
- }
- function initCyzgs() {
- return [
- { code: 0, name: "好转/治愈" },
- { code: 1, name: "未愈" },
- { code: 2, name: "转院(医院要求)" },
- { code: 3, name: "转院(病人要求)" },
- { code: 4, name: "转科" },
- { code: 5, name: "无效" },
- { code: 6, name: "死亡" },
- { code: 7, name: "双向转诊" },
- { code: 9, name: "其他" },
- ];
- }
- function initAdmissConds() {
- return [
- { code: 1, name: "有" },
- { code: 2, name: "临床未确定" },
- { code: 3, name: "情况不明" },
- { code: 4, name: "无" },
- ];
- }
- function initDiagTypes() {
- return [
- { code: 1, name: "西医诊断" },
- { code: 2, name: "中医主病诊断" },
- { code: 3, name: "中医主症诊断" },
- ];
- }
- </script>
- <style scoped>
- :deep(.el-dialog__body) {
- padding-top: 8px;
- }
- :deep(.el-drawer) {
- border: 1px solid orange;
- }
- :deep(.el-drawer .el-icon) {
- font-size: 20px;
- color: orangered;
- }
- :deep(.el-drawer__header) {
- margin-bottom: 8px;
- }
- :deep(.el-dialog__header) {
- padding-bottom: 4px;
- }
- :deep(.el-checkbox__label) {
- padding-left: 2px;
- }
- select,
- input {
- outline: none;
- border: none;
- height: 20px;
- line-height: 20px;
- border-radius: 0;
- background: transparent;
- border-bottom: 1px solid #333333;
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
- }
- input[type="number"] {
- -moz-appearance: textfield;
- }
- select ::-ms-expand {
- display: none;
- }
- textarea {
- outline: none;
- border: none;
- background-color: transparent;
- }
- table th {
- border: 1px solid black;
- text-align: center;
- }
- table td {
- border: 1px solid black;
- }
- .page-inner {
- padding: 0 20px 10px 26px;
- border-radius: 12px;
- text-align: justify;
- }
- .message-item {
- padding: 6px;
- margin-bottom: 6px;
- border-radius: 4px;
- }
- .message-item:hover {
- cursor: pointer;
- }
- .rightside-btn {
- display: flex;
- align-items: center;
- text-align: center;
- color: white;
- border-radius: 4px;
- width: 20px;
- height: 185px;
- position: fixed;
- background: rgb(238, 98, 5);
- top: 260px;
- right: 10px;
- cursor: pointer;
- }
- .no-verify-message {
- width: 100%;
- text-align: center;
- margin-top: 50px;
- font-size: 18px;
- color: gray;
- }
- :deep(.m-drawer .el-overlay) {
- right: 0;
- left: calc(100vw - 260px);
- background: transparent !important;
- }
- :deep(#livePlace .el-input__wrapper) {
- background: transparent;
- border: none;
- box-shadow: none;
- border-radius: 0;
- border-bottom: 1px solid black;
- color: black;
- }
- :deep(#livePlace .el-input__inner) {
- color: black;
- }
- .audit-state {
- font-weight: bold;
- font-size: 16px;
- }
- .audit-state_approved {
- color: green;
- }
- .audit-state_rejected {
- color: red;
- text-decoration: underline;
- cursor: pointer;
- }
- .audit-state_initial {
- color: #777777;
- }
- .audit-state_none {
- color: #e8b600;
- }
- .order-arrow {
- font-size: 16px;
- cursor: pointer;
- }
- .order-arrow:hover {
- color: #0a84fd;
- }
- </style>
|