Files
his/openhis-server-new/openhis-application/src/main/resources/mapper/ybmanage/YbMapper.xml
2025-12-27 15:30:25 +08:00

260 lines
13 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.ybmanage.mapper.YbMapper">
<select id="yb3101SelectEncounterPatientInfo"
resultType="com.openhis.yb.dto.Yb3101AdapterEncounterPatientInfo">
SELECT MAX(T5.psn_no) AS patnId
, MAX(T5.psn_name) AS patnName
, MAX(T5.gend) AS gend
, MAX(T5.brdy) AS brdy
, MAX(T5.insuplc_admdvs) AS poolarea
, MAX(T8.mdtrt_id) AS mdtrtId
, MAX(T4.id) AS contractId
, MAX(T4.fixmedins_code) AS medinsId
, MAX(T4.fixmedins_name) AS medinsName
, MAX(T4.adm_vs) AS medinsAdmdvs
, MAX(COALESCE(T1.start_time, T1.create_time)) AS admDate
, MAX(T1.end_time) AS dscgDate
, MAX(T6.practitioner_id) AS drCodg
, MAX(COALESCE(T12.bus_no, T7.bus_no)) AS admDeptCodg
, MAX(COALESCE(T12.name, T7.name)) AS admDeptName
, MAX(T7.bus_no) AS dscgDeptCodg
, MAX(T7.name) AS dscgDeptName
, MAX(T1.yb_class_enum) AS medType
, SUM(T9.fulamt_ownpay_amt) AS ownpayAmt
, SUM(T9.preselfpay_amt) AS selfpayAmt
, COUNT(T9.id) AS setlTotlnum
, MAX(T5.insutype) AS insutype
FROM adm_encounter T1
INNER JOIN adm_patient T2
ON T2.id = T1.patient_id
INNER JOIN adm_account T3
ON T3.encounter_id = T1.id
AND T3.encounter_flag = #{encounterFlag}
INNER JOIN fin_contract T4
ON T4.bus_no = T3.contract_no
INNER JOIN LATERAL ( SELECT psn_no
, psn_name
, gend
, brdy
, insuplc_admdvs
, insutype
FROM yb_pub_perinfo
WHERE certno = T2.id_card
ORDER BY create_time DESC LIMIT 1) T5
ON T2.id_card IS NOT NULL
INNER JOIN adm_encounter_participant T6
ON T6.encounter_id = T1.id
AND T6.delete_flag = #{deleteFlag}
AND T6.type_code = #{participantType}
INNER JOIN adm_organization T7
ON T7.id = T1.organization_id
INNER JOIN yb_clinc_reg T8
ON T8.ipt_otp_no = T1.bus_no
INNER JOIN yb_clinc_settle T9
ON T9.mdtrt_id = T8.mdtrt_id
LEFT JOIN LATERAL ( SELECT location_id
FROM adm_encounter_location
WHERE encounter_id = T1.id
ORDER BY create_time LIMIT 1) T10
ON TRUE
LEFT JOIN adm_location T11
ON T11.id = T10.location_id
LEFT JOIN adm_organization T12
ON T12.id = T11.organization_id
WHERE T1.id = #{encounterId}
</select>
<select id="yb3101SelectEncounterDiagnoseInfo"
resultType="com.openhis.yb.dto.Yb3101AdapterEncounterDiagnoseInfo">
SELECT T1.id AS diseId
, T1.ipt_dise_type_code AS iptDiseTypeCode
, T1.maindise_flag AS maindiseFlag
, T1.diag_srt_no AS diasSrtNo
, T2.yb_no AS diseCodg
, T3."name" AS diseName
, T1.create_time AS diseDate
FROM adm_encounter_diagnosis T1
INNER JOIN cli_condition T2
ON T2.id = T1.condition_id
INNER JOIN cli_condition_definition T3
ON T3.id = T2.definition_id
WHERE T1.delete_flag = #{deleteFlag}
AND T1.encounter_id = #{encounterId}
</select>
<select id="yb3101SelectOrderInfo" resultType="com.openhis.yb.dto.Yb3101AdapterOrderInfo">
SELECT T3.bus_no AS rxId
, T3.prescription_no AS rxno
, T3.group_id AS grpno
, T3.therapy_enum AS therapyEnum
, T2.yb_type AS ybType
, COALESCE(T5.medical_catalog_code, T6.medical_catalog_code) AS hilistCode
, COALESCE(T5.registered_name, T6.single_drug_name) AS hilistName
, COALESCE(T5.drug_form, '') AS hilistDosform
, T4.chrgitm_lv AS hilistLv
, T1.quantity_value AS cnt
, T1.unit_price AS pric
, T1.total_price AS sumamt
, COALESCE(T5.registered_spec, '') AS spec
, COALESCE(T5.min_package_unit, '') AS specUnt
, T1.entered_date AS drordBegnDate
, T7.bus_no AS drordDeptCodg
, T7."name" AS drordDeptName
, T8.yb_no AS drordDrCodg
, T8."name" AS drordDrName
, T8.dr_profttl_code AS drordDrProfttl
FROM adm_charge_item T1
INNER JOIN adm_charge_item_definition T2
ON T2.id = T1.definition_id
INNER JOIN med_medication_request T3
ON T3.id = T1.service_id
AND T1.service_table = 'med_medication_request'
INNER JOIN med_medication_definition T4
ON T4.id = T1.product_id
LEFT JOIN LATERAL (SELECT medical_catalog_code
, registered_name
, drug_form
, registered_spec
, min_package_unit
FROM yb_catalog_drug_info
WHERE medical_catalog_code = T4.yb_no
AND T2.yb_type = #{ybMedChrgItmTypeWest}
OR T2.yb_type = #{ybMedChrgItmTypeChinese}
ORDER BY created_at DESC LIMIT 1) T5
ON true
LEFT JOIN LATERAL (SELECT medical_catalog_code
, single_drug_name
FROM yb_catalog_medical_herb_info
WHERE medical_catalog_code = T4.yb_no
AND T2.yb_type = #{ybMedChrgItmTypeChineseSlices}
ORDER BY create_time DESC LIMIT 1 ) T6 ON true
INNER JOIN adm_organization T7
ON T7.id = T1.requesting_org_id
INNER JOIN adm_practitioner T8
ON T8.id = T1.enterer_id
WHERE T1.delete_flag = #{deleteFlag}
AND T1.encounter_id = #{encounterId}
</select>
<select id="yb4101aSelectSettleInfo" resultType="com.openhis.yb.dto.Yb4101AAdapterSettleInfo">
SELECT T4.psn_no AS psnNo
, T6.mdtrt_id AS mdtrtId
, T2.setl_id AS setlId
, T3.country_code AS ntly
, T3.prfs_enum AS prfs
, T7.caty AS dscgCaty
, T8.bill_batch_code AS billCode
, T8.bill_no AS billNo
, T1.payment_no AS bizSn
, T2.setl_time AS setlDate
FROM fin_payment_reconciliation T1
INNER JOIN yb_inpatient_settle T2
ON T1.yb_settle_ids LIKE CONCAT('%', T2.setl_id, '%')
INNER JOIN adm_patient T3
ON T3.id = T1.patient_id
INNER JOIN LATERAL ( SELECT psn_no
FROM yb_pub_perinfo
WHERE certno = T3.id_card
ORDER BY create_time DESC LIMIT 1) T4
ON T3.id_card IS NOT NULL
INNER JOIN adm_encounter T5
ON T5.id = T1.encounter_id
INNER JOIN yb_clinc_reg T6
ON T6.ipt_otp_no = T5.bus_no
INNER JOIN adm_organization T7
ON T7.id = T5.organization_id
INNER JOIN adm_invoice T8
ON T8.reconciliation_id = T1.id
WHERE T1.id = #{paymentId}
</select>
<select id="yb4101aSelectOpspdiseinfo" resultType="com.openhis.yb.dto.Yb4101AInputOpspdiseinfo">
SELECT T5."name" AS diagName
, T5.yb_no AS diagCode
FROM fin_payment_reconciliation T1
INNER JOIN adm_charge_item T2
ON T1.charge_item_ids LIKE CONCAT('%', T2.id, '%')
INNER JOIN adm_encounter_diagnosis T3
ON T3.id = T2.encounter_diagnosis_id
INNER JOIN cli_condition T4
ON T4.id = T3.condition_id
INNER JOIN cli_condition_definition T5
ON T5.id = T4.definition_id
WHERE T1.id = #{paymentId}
GROUP BY T5."name", T5.yb_no
</select>
<select id="getInHospitalRegisterInfo"
resultType="com.openhis.web.ybmanage.dto.YbInHospitalRegisterQueryDto">
SELECT ihri.tenant_id,
ihri.encounter_id,
ihri.amb_encounter_id,
ihri.patient_id,
ihri.request_time,
ihri.registrar,
ihri.source_name,
ihri.patient_name,
ihri.gender_enum,
ihri.birth_date,
ihri.ward_name,
ihri.mdtrt_id
from (SELECT ae.tenant_id,
ae.ID AS encounter_id,
ae.amb_encounter_id AS amb_encounter_id,
ae.patient_id AS patient_id,
ae.create_time AS request_time,
aper.NAME AS registrar,
ao.NAME AS source_name,
ap.NAME AS patient_name,
ap.gender_enum AS gender_enum,
ap.birth_date AS birth_date,
al.NAME AS ward_name,
inreg.mdtrt_id
FROM adm_encounter AS ae
LEFT JOIN adm_encounter AS ambae ON ae.amb_encounter_id = ambae.
ID
LEFT JOIN adm_organization AS ao ON ao.ID = ambae.organization_id
AND ao.delete_flag = '0'
LEFT JOIN adm_patient AS ap ON ap.ID = ae.patient_id
AND ap.delete_flag = '0'
LEFT JOIN adm_encounter_location AS ael ON ael.encounter_id = ae.ID
AND ael.delete_flag = '0'
AND ael.form_enum = #{formEnum}
LEFT JOIN adm_location AS al ON al.ID = ael.location_id
AND al.delete_flag = '0'
LEFT JOIN adm_practitioner AS aper ON aper.ID = ae.registrar_id
AND aper.delete_flag = '0'
LEFT JOIN yb_inpatient_reg AS inreg ON inreg.ipt_no = ae.bus_no
WHERE ae.delete_flag = '0'
AND ae.class_enum = #{encounterClass}
) AS ihri
${ew.customSqlSegment}
</select>
<select id="getDiagnosisList" resultType="com.openhis.web.ybmanage.dto.EncounterDiagnosisDto">
SELECT
endi.id,
endi.encounter_id,
endi.condition_id,
endi.ipt_dise_crsp,
endi.ipt_dise_type_code,
endi.adm_dise_cond_code,
endi.med_type_code,
endi.maindise_flag,
endi.high_dise_evid_flag,
endi.diag_srt_no,
endi.syndrome_group_no,
endi.tcm_flag,
endi.diagnosis_desc,
condef.type_code,
condef.yb_no,
condef.name
FROM
adm_encounter_diagnosis endi
LEFT JOIN cli_condition con ON endi.condition_id = con.id
LEFT JOIN cli_condition_definition condef ON con.definition_id = condef."id"
WHERE
endi.encounter_id = #{encounterId}
AND endi.delete_flag = '0'
</select>
</mapper>