版本更新

This commit is contained in:
Zhang.WH
2025-09-03 15:54:41 +08:00
parent 0b93d16b64
commit 8f82322d10
3290 changed files with 154339 additions and 23829 deletions

View File

@@ -0,0 +1,139 @@
<?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.chargemanage.mapper.InpatientChargeAppMapper">
<select id="selectEncounterPatientPage"
resultType="com.openhis.web.chargemanage.dto.EncounterPatientPageDto">
SELECT T4.encounter_id,
T4.encounter_bus_no,
T4.patient_id,
T4.reception_time,
T4.patient_name,
T4.patient_bus_no,
T4.gender_enum,
T4.birth_date,
T4.id_card,
T4.start_time,
T4.patient_py_str,
T4.patient_wb_str,
T4.status_enum
FROM (
SELECT T1.id AS encounter_id,
T1.bus_no AS encounter_bus_no,
T1.patient_id,
T1.reception_time,
T1.delete_flag,
T1.tenant_id,
T2."name" AS patient_name,
T2.bus_no AS patient_bus_no,
T2.gender_enum,
T2.birth_date,
T1.start_time,
T2.id_card,
T2.py_str AS patient_py_str,
T2.wb_str AS patient_wb_str,
T3.status_enum
FROM adm_encounter AS T1
LEFT JOIN adm_patient AS T2
ON T1.patient_id = T2.id
INNER JOIN adm_charge_item AS T3
ON T3.encounter_id = T1.id
AND T3.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND T1.class_enum = #{classEnum}
GROUP BY T1.id,
T1.bus_no,
T1.patient_id,
T1.reception_time,
T1.delete_flag,
T1.tenant_id,
T2."name",
T2.bus_no,
T2.gender_enum,
T2.birth_date,
T2.id_card,
T2.py_str,
T2.wb_str,
T3.status_enum
ORDER BY T1.bus_no DESC
) AS T4
${ew.customSqlSegment}
</select>
<select id="selectEncounterPatientPrescription"
resultType="com.openhis.web.chargemanage.dto.EncounterPatientPrescriptionDto">
SELECT T1.encounter_id,
T1.id,
T1.patient_id,
T1.context_enum,
T1.status_enum,
T1.requesting_org_id,
T1.quantity_value,
T1.quantity_unit,
T1.unit_price,
T1.total_price,
T1.prescription_no,
T1.bus_no,
T1.entered_date,
T1.account_id,
T1.service_table,
T5.enterer_id,
T5.bill_date,
T6.contract_no,
T7.med_type_code,
T8.contract_name,
CASE
WHEN T1.context_enum = #{activity} THEN T2."name"
WHEN T1.context_enum = #{medication} THEN T3."name"
WHEN T1.context_enum = #{device} THEN T4."name"
END AS item_name,
CASE
WHEN T1.context_enum = #{activity} THEN T2.yb_no
WHEN T1.context_enum = #{medication} THEN T3.yb_no
WHEN T1.context_enum = #{device} THEN T4.yb_no
END AS yb_no,
CASE
WHEN T1.context_enum = #{activity} THEN T2.id
WHEN T1.context_enum = #{medication} THEN T3.id
WHEN T1.context_enum = #{device} THEN T4.id
END AS item_id
FROM adm_charge_item AS T1
LEFT JOIN wor_activity_definition AS T2
ON T1.context_enum = #{activity}
AND T1.product_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication_definition AS T3
ON T1.context_enum = #{medication}
AND T1.product_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN adm_device_definition AS T4
ON T1.context_enum = #{device}
AND T1.product_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation AS T5
ON T1.id::TEXT = ANY(string_to_array(T5.charge_item_ids, ','))
AND T5.delete_flag = '0'
AND T5.status_enum = 1
LEFT JOIN adm_account AS T6
ON T1.account_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_encounter_diagnosis AS T7
ON T1.encounter_id = T7.encounter_id
AND T1.condition_id = T7.condition_id
AND T7.delete_flag = '0'
LEFT JOIN fin_contract AS T8
ON T6.contract_no = T8.bus_no
AND T8.delete_flag = '0'
WHERE T1.encounter_id = #{encounterId}
AND T1.status_enum IN (#{planned}
, #{billable}
, #{billed}
, #{refunding}
, #{refunded}
, #{partRefund})
AND T1.context_enum != #{register}
AND T1.entered_date &gt;= #{startTime}
AND T1.entered_date &lt;= #{endTime}
AND T1.delete_flag = '0'
</select>
</mapper>

View File

@@ -0,0 +1,126 @@
<?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.chargemanage.mapper.OutpatientChargeAppMapper">
<select id="selectEncounterPatientPage"
resultType="com.openhis.web.chargemanage.dto.EncounterPatientPageDto">
SELECT T4.encounter_id,
T4.encounter_bus_no,
T4.patient_id,
T4.reception_time,
T4.patient_name,
T4.patient_bus_no,
T4.gender_enum,
T4.birth_date,
T4.id_card,
T4.patient_py_str,
T4.patient_wb_str,
T4.status_enum
FROM (
SELECT T1.id AS encounter_id,
T1.bus_no AS encounter_bus_no,
T1.patient_id,
T1.reception_time,
T1.delete_flag,
T1.tenant_id,
T2."name" AS patient_name,
T2.bus_no AS patient_bus_no,
T2.gender_enum,
T2.birth_date,
T2.id_card,
T2.py_str AS patient_py_str,
T2.wb_str AS patient_wb_str,
T3.status_enum
FROM adm_encounter AS T1
LEFT JOIN adm_patient AS T2
ON T1.patient_id = T2.id
INNER JOIN adm_charge_item AS T3
ON T3.encounter_id = T1.id
AND T3.delete_flag = '0'
WHERE T1.delete_flag = '0'
GROUP BY T1.id,
T1.bus_no,
T1.patient_id,
T1.reception_time,
T1.delete_flag,
T1.tenant_id,
T2."name",
T2.bus_no,
T2.gender_enum,
T2.birth_date,
T2.id_card,
T2.py_str,
T2.wb_str,
T3.status_enum
ORDER BY T1.bus_no DESC
) AS T4
${ew.customSqlSegment}
</select>
<select id="selectEncounterPatientPrescription"
resultType="com.openhis.web.chargemanage.dto.EncounterPatientPrescriptionDto">
SELECT T1.encounter_id,
T1.id,
T1.patient_id,
T1.context_enum,
T1.status_enum,
T1.requesting_org_id,
T1.quantity_value,
T1.quantity_unit,
T1.unit_price,
T1.total_price,
T1.prescription_no,
T1.bus_no,
T1.entered_date,
T1.account_id,
T1.service_table,
T5.enterer_id,
T5.bill_date,
T6.contract_no,
T7.med_type_code,
T8.contract_name,
CASE WHEN T1.context_enum = #{activity} THEN T2."name"
WHEN T1.context_enum = #{medication} THEN T3."name"
WHEN T1.context_enum = #{device} THEN T4."name"
END AS item_name,
CASE WHEN T1.context_enum = #{activity} THEN T2.yb_no
WHEN T1.context_enum = #{medication} THEN T3.yb_no
WHEN T1.context_enum = #{device} THEN T4.yb_no
END AS yb_no,
CASE WHEN T1.context_enum = #{activity} THEN T2.id
WHEN T1.context_enum = #{medication} THEN T3.id
WHEN T1.context_enum = #{device} THEN T4.id
END AS item_id
FROM adm_charge_item AS T1
LEFT JOIN wor_activity_definition AS T2
ON T1.context_enum = #{activity}
AND T1.product_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication_definition AS T3
ON T1.context_enum = #{medication}
AND T1.product_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN adm_device_definition AS T4
ON T1.context_enum = #{device}
AND T1.product_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation AS T5
ON T1.id::TEXT = ANY(string_to_array(T5.charge_item_ids, ','))
AND T5.delete_flag = '0'
AND T5.status_enum = 1
LEFT JOIN adm_account AS T6
ON T1.account_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_encounter_diagnosis AS T7
ON T1.encounter_id = T7.encounter_id
AND T1.condition_id = T7.condition_id
AND T7.delete_flag = '0'
LEFT JOIN fin_contract AS T8
ON T6.contract_no = T8.bus_no
AND T8.delete_flag = '0'
WHERE T1.encounter_id = #{encounterId}
AND T1.status_enum IN (#{planned} ,#{billable} ,#{billed} ,#{refunding} ,#{refunded} ,#{partRefund})
AND T1.context_enum != #{register}
AND T1.delete_flag = '0'
</select>
</mapper>

View File

@@ -0,0 +1,5 @@
<?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.chargemanage.mapper.OutpatientPricingAppMapper">
</mapper>

View File

@@ -0,0 +1,475 @@
<?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.chargemanage.mapper.OutpatientRefundAppMapper">
<resultMap id="encounterPatientRefundMap"
type="com.openhis.web.chargemanage.dto.EncounterPatientRefundDto">
<!--患者退费项目信息-->
<result property="paymentId" column="payment_id"/>
<result property="entererId" column="enterer_id"/>
<result property="encounterId" column="encounter_id"/>
<result property="patientId" column="patient_id"/>
<result property="prescriptionNo" column="prescription_no"/>
<result property="busNo" column="bus_no"/>
<result property="contractNo" column="contract_no"/>
<result property="billDate" column="bill_date"/>
<result property="chargeItemIds" column="charge_item_ids"/>
<result property="itemName" column="item_name"/>
<result property="orgName" column="org_name"/>
<result property="entererName" column="enterer_name"/>
<result property="chargeStatus" column="charge_status"/>
<result property="paymentStatus" column="payment_status"/>
<result property="dispenseStatus" column="dispense_status"/>
<result property="serviceStatus" column="service_status"/>
<result property="quantityValue" column="quantity_value"/>
<result property="dispenseQuantity" column="dispense_quantity"/>
<result property="quantityUnit" column="quantity_unit"/>
<result property="unitPrice" column="unit_price"/>
<result property="totalPrice" column="total_price"/>
<result property="requestId" column="request_id"/>
<result property="dispenseId" column="dispense_id"/>
<result property="serviceTable" column="service_table"/>
<!--支付明细-->
<collection property="paymentDetailList"
ofType="com.openhis.yb.dto.PaymentDetailDto">
<!--唯一值,避免相同数据合并-->
<id column="payment_detail_id"/>
<result property="payEnum" column="pay_enum"/>
<!-- <result property="payLevelEnum" column="pay_level_enum"/>-->
<result property="amount" column="amount"/>
<result property="returnAmount" column="return_amount"/>
<result property="chargeAmount" column="charge_amount"/>
</collection>
</resultMap>
<select id="selectEncounterPatientPayment"
resultType="com.openhis.web.chargemanage.dto.EncounterPatientPaymentDto">
SELECT T1.id,
T1.status_enum,
T1.relation_id,
T1.payment_no,
T1.payment_enum,
T1.location_id,
T1.expiration_date,
T1.tendered_amount,
T1.returned_amount,
T1.contract_no,
T2.prescription_no,
T2.account_id
FROM fin_payment_reconciliation AS T1
LEFT JOIN adm_charge_item AS T2
-- 因为T2.id是long型T1.charge_item_ids是例如 [1,2] 的string类型所以需要先转类型再匹配
ON T2.id::TEXT = ANY(string_to_array(T1.charge_item_ids, ','))
AND T2.delete_flag = '0'
WHERE T1.encounter_id =#{encounterId}
AND T1.status_enum IN (#{success})
AND T1.delete_flag = '0'
</select>
<select id="selectRefundItem" resultType="com.openhis.web.chargemanage.dto.RefundItemDto">
SELECT T1.id AS charge_item_id,
T1.service_table,
T1.service_id,
T2.bus_no,
T2.prescription_no,
T2.quantity,
T2.medication_id AS item_id,
T2.unit_code,
T1.unit_price,
T1.total_price,
T3.status_enum AS dispense_status,
T3.not_performed_reason_enum AS not_performed_reason,
0 AS service_status,
T3.id AS dispense_id,
T2.id AS request_id,
T7.name AS item_name,
T10.id AS payment_id,
T1.status_enum AS refund_status
FROM adm_charge_item AS T1
LEFT JOIN med_medication_request AS T2
ON T2.id = T1.service_id
AND T2.delete_flag = '0'
LEFT JOIN med_medication_dispense AS T3
ON T3.med_req_id = T2.id
AND T3.delete_flag = '0'
LEFT JOIN med_medication_definition AS T7
ON T1.product_id = T7.id
AND T7.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation AS T10
ON T1.id::TEXT = ANY(string_to_array(T10.charge_item_ids, ','))
AND T10.delete_flag = '0'
AND T10.status_enum = 1
WHERE T1.service_table = #{medMedicationRequest}
AND T1.delete_flag = '0'
AND T2.refund_medicine_id IS NULL
<if test="chargeItemIdList != null and !chargeItemIdList.isEmpty()">
AND T1.id IN
<foreach collection="chargeItemIdList" item="chargeItemId" separator="," open="(" close=")">
#{chargeItemId}
</foreach>
</if>
UNION
SELECT T1.id AS charge_item_id,
T1.service_table,
T1.service_id,
T4.bus_no,
T4.prescription_no,
T4.quantity,
T4.device_def_id AS item_id,
T4.unit_code,
T1.unit_price,
T1.total_price,
T5.status_enum AS dispense_status,
T5.not_performed_reason_enum AS not_performed_reason,
0 AS service_status,
T5.id AS dispense_id,
T4.id AS request_id,
T8.name AS item_name,
T10.id AS payment_id,
T1.status_enum AS refund_status
FROM adm_charge_item AS T1
LEFT JOIN wor_device_request AS T4
ON T4.id = T1.service_id
AND T4.delete_flag = '0'
LEFT JOIN wor_device_dispense AS T5
ON T5.device_req_id = T4.id
AND T5.delete_flag = '0'
LEFT JOIN adm_device_definition AS T8
ON T1.product_id = T8.id
AND T8.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation AS T10
ON T1.id::TEXT = ANY(string_to_array(T10.charge_item_ids, ','))
AND T10.delete_flag = '0'
AND T10.status_enum = 1
WHERE T1.service_table = #{worDeviceRequest}
AND T4.refund_device_id IS NULL
AND T1.delete_flag = '0'
<if test="chargeItemIdList != null and !chargeItemIdList.isEmpty()">
AND T1.id IN
<foreach collection="chargeItemIdList" item="chargeItemId" separator="," open="(" close=")">
#{chargeItemId}
</foreach>
</if>
UNION
SELECT T1.id AS charge_item_id,
T1.service_table,
T1.service_id,
T6.bus_no,
T6.prescription_no,
T6.quantity,
T6.activity_id AS item_id,
T6.unit_code,
T1.unit_price,
T1.total_price,
0 AS dispense_status,
null AS not_performed_reason,
T6.status_enum AS service_status,
null AS dispense_id,
T6.id AS request_id,
T9.name AS item_name,
T10.id AS payment_id,
T1.status_enum AS refund_status
FROM adm_charge_item AS T1
LEFT JOIN wor_service_request AS T6
ON T6.id = T1.service_id
AND T6.delete_flag = '0'
LEFT JOIN wor_activity_definition AS T9
ON T1.product_id = T9.id
AND T9.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation AS T10
ON T1.id::TEXT = ANY(string_to_array(T10.charge_item_ids, ','))
AND T10.delete_flag = '0'
AND T10.status_enum = 1
WHERE T1.service_table = #{worServiceRequest}
AND T1.delete_flag = '0'
<if test="chargeItemIdList != null and !chargeItemIdList.isEmpty()">
AND T1.id IN
<foreach collection="chargeItemIdList" item="chargeItemId" separator="," open="(" close=")">
#{chargeItemId}
</foreach>
</if>
</select>
<select id="selectBilledEncounterPatientPage"
resultType="com.openhis.web.chargemanage.dto.EncounterPatientPageDto">
SELECT T8.encounter_id,
T8.encounter_bus_no,
T8.status_enum,
T8.start_time,
T8.patient_name,
T8.patient_bus_no,
T8.gender_enum,
T8.birth_date,
T8.id_card,
T8.patient_py_str,
T8.patient_wb_str,
T8.type_code,
T8.category_enum,
T8.total_amount,
T8.max_bill_date,
T8.insurance_amount,
T8.self_amount
FROM (
SELECT T1.id AS encounter_id,
T1.bus_no AS encounter_bus_no,
T1.start_time,
T1.delete_flag,
T1.tenant_id,
T3.status_enum,
T2."name" AS patient_name,
T2.bus_no AS patient_bus_no,
T2.gender_enum,
T2.birth_date,
T2.id_card,
T2.py_str AS patient_py_str,
T2.wb_str AS patient_wb_str,
T4.type_code,
T5.category_enum,
SUM(T6.tendered_amount) AS total_amount,
MAX(T6.bill_date) AS max_bill_date,
CASE WHEN T7.account_code = #{insurance} THEN SUM(T7.amount) ELSE 0 END AS insurance_amount,
CASE WHEN T7.account_code != #{insurance} THEN SUM(T7.amount) ELSE 0 END AS self_amount
FROM adm_encounter AS T1
LEFT JOIN adm_patient AS T2
ON T1.patient_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item AS T3
ON T3.encounter_id = T1.id
AND T3.delete_flag = '0'
LEFT JOIN adm_account AS T4
ON T4.id = T3.account_id
AND T4.delete_flag = '0'
LEFT JOIN fin_contract AS T5
ON T5.bus_no = T4.contract_no
AND T5.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation AS T6
ON T6.encounter_id = T1.id
AND T6.status_enum = 1
AND T6.delete_flag = '0'
LEFT JOIN fin_payment_rec_detail AS T7
ON T7.reconciliation_id = T6.id
AND T7.delete_flag = '0'
WHERE T3.status_enum IN (#{billed}, #{refunding}, #{refunded}, #{partRefund})
AND T3.refund_id IS NULL
AND T1.class_enum = #{amb}
AND T1.delete_flag = '0'
GROUP BY T1.id,
T1.bus_no,
T1.start_time,
T1.delete_flag,
T1.tenant_id,
T3.status_enum,
T2."name",
T2.bus_no,
T2.gender_enum,
T2.birth_date,
T2.id_card,
T2.py_str,
T2.wb_str,
T4.type_code,
T5.category_enum,
T7.account_code
) AS T8
${ew.customSqlSegment}
ORDER BY T8.max_bill_date DESC
</select>
<select id="selectEncounterPatientRefund" resultMap="encounterPatientRefundMap">
SELECT aci.encounter_id,
aci.bus_no,
aci.status_enum AS charge_status,
aci.quantity_unit,
aci.quantity_value,
aci.unit_price,
aci.total_price,
aci.service_table,
mmr.prescription_no,
mmr.id AS request_id,
dis.status_enum AS dispense_status,
0 AS service_status,
dis.dispense_quantity,
dis.id AS dispense_id,
mmd."name" AS item_name,
fpr.id AS payment_id,
fpr.enterer_id,
fpr.patient_id,
fpr.status_enum AS payment_status,
fpr.contract_no,
fpr.bill_date,
fpr.charge_item_ids,
fprd.id AS payment_detail_id,
fprd.target_enum,
fprd.account_id,
fprd.account_code,
fprd.pay_enum,
fprd.pay_level_enum,
fprd.amount,
fprd.return_amount,
fprd.charge_amount,
ao."name" AS org_name,
ap."name" AS enterer_name
FROM adm_charge_item aci
LEFT JOIN med_medication_request mmr
ON aci.service_id = mmr.refund_medicine_id
AND mmr.refund_medicine_id IS NOT NULL
AND mmr.delete_flag = '0'
LEFT JOIN med_medication_dispense dis
ON mmr.id = dis.med_req_id
AND dis.delete_flag = '0'
INNER JOIN med_medication_definition mmd
ON aci.product_id = mmd.id
AND mmd.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation fpr
ON aci.id::TEXT = ANY(string_to_array(fpr.charge_item_ids, ','))
AND fpr.status_enum = 1
AND fpr.delete_flag = '0'
LEFT JOIN fin_payment_rec_detail fprd
ON fpr.id = fprd.reconciliation_id
AND fprd.delete_flag = '0'
LEFT JOIN adm_organization ao
ON ao.id = aci.org_id
AND ao.delete_flag = '0'
LEFT JOIN adm_practitioner ap
ON ap.id = fpr.enterer_id
AND ap.delete_flag = '0'
WHERE aci.encounter_id = #{encounterId}
AND aci.status_enum IN (#{partRefund}
, #{refunded}
, #{refunding})
AND aci.service_table = #{medMedicationRequest}
AND aci.refund_id IS NULL
AND aci.delete_flag = '0'
AND TO_CHAR(fpr.bill_date
, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{billDateSTime}
AND #{billDateETime}
UNION
SELECT aci.encounter_id,
aci.bus_no,
aci.status_enum AS charge_status,
aci.quantity_unit,
aci.quantity_value,
aci.unit_price,
aci.total_price,
aci.service_table,
wdr.prescription_no,
wdr.id AS request_id,
wdd.status_enum AS dispense_status,
0 AS service_status,
wdd.dispense_quantity,
wdd.id AS dispense_id,
dev."name" AS item_name,
fpr.id AS payment_id,
fpr.enterer_id,
fpr.patient_id,
fpr.status_enum AS payment_status,
fpr.contract_no,
fpr.bill_date,
fpr.charge_item_ids,
fprd.id AS payment_detail_id,
fprd.target_enum,
fprd.account_id,
fprd.account_code,
fprd.pay_enum,
fprd.pay_level_enum,
fprd.amount,
fprd.return_amount,
fprd.charge_amount,
ao."name" AS org_name,
ap."name" AS enterer_name
FROM adm_charge_item aci
LEFT JOIN wor_device_request wdr
ON aci.service_id = wdr.refund_device_id
AND wdr.refund_device_id IS NOT NULL
AND wdr.delete_flag = '0'
LEFT JOIN wor_device_dispense wdd
ON wdr.id = wdd.device_req_id
AND wdd.delete_flag = '0'
INNER JOIN adm_device_definition dev
ON aci.product_id = dev.id
AND dev.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation fpr
ON aci.id::TEXT = ANY(string_to_array(fpr.charge_item_ids, ','))
AND fpr.status_enum = 1
AND fpr.delete_flag = '0'
LEFT JOIN fin_payment_rec_detail fprd
ON fpr.id = fprd.reconciliation_id
AND fprd.delete_flag = '0'
LEFT JOIN adm_organization ao
ON ao.id = aci.org_id
AND ao.delete_flag = '0'
LEFT JOIN adm_practitioner ap
ON ap.id = fpr.enterer_id
AND ap.delete_flag = '0'
WHERE aci.encounter_id = #{encounterId}
AND aci.status_enum IN (#{partRefund}
, #{refunded}
, #{refunding})
AND aci.service_table = #{worDeviceRequest}
AND aci.refund_id IS NULL
AND aci.delete_flag = '0'
AND TO_CHAR(fpr.bill_date
, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{billDateSTime}
AND #{billDateETime}
UNION
SELECT aci.encounter_id,
aci.bus_no,
aci.status_enum AS charge_status,
aci.quantity_unit,
aci.quantity_value,
aci.unit_price,
aci.total_price,
aci.service_table,
wsr.prescription_no,
wsr.id AS request_id,
0 AS dispense_status,
wsr.status_enum AS service_status,
0 AS dispense_quantity,
null AS dispense_id,
wad."name" AS item_name,
fpr.id AS payment_id,
fpr.enterer_id,
fpr.patient_id,
fpr.status_enum AS payment_status,
fpr.contract_no,
fpr.bill_date,
fpr.charge_item_ids,
fprd.id AS payment_detail_id,
fprd.target_enum,
fprd.account_id,
fprd.account_code,
fprd.pay_enum,
fprd.pay_level_enum,
fprd.amount,
fprd.return_amount,
fprd.charge_amount,
ao."name" AS org_name,
ap."name" AS enterer_name
FROM adm_charge_item aci
LEFT JOIN wor_service_request wsr
ON aci.service_id = wsr.id
AND wsr.refund_service_id IS NOT NULL
AND wsr.delete_flag = '0'
INNER JOIN wor_activity_definition wad
ON aci.product_id = wad.id
AND wad.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation fpr
ON aci.id::TEXT = ANY(string_to_array(fpr.charge_item_ids,','))
AND fpr.status_enum = 1
AND fpr.delete_flag = '0'
LEFT JOIN fin_payment_rec_detail fprd
ON fpr.id = fprd.reconciliation_id
AND fprd.delete_flag = '0'
LEFT JOIN adm_organization ao
ON ao.id = aci.org_id
AND ao.delete_flag = '0'
LEFT JOIN adm_practitioner ap
ON ap.id = fpr.enterer_id
AND ap.delete_flag = '0'
WHERE aci.encounter_id = #{encounterId}
AND aci.status_enum IN (#{partRefund}
, #{refunded}
, #{refunding})
AND aci.service_table = #{worServiceRequest}
AND aci.refund_id IS NULL
AND aci.delete_flag = '0'
AND TO_CHAR(fpr.bill_date
, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{billDateSTime}
AND #{billDateETime}
</select>
</mapper>

View File

@@ -0,0 +1,136 @@
<?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.chargemanage.mapper.OutpatientRegistrationAppMapper">
<select id="getPractitionerMetadataPage" resultType="com.openhis.web.chargemanage.dto.PractitionerMetadata">
SELECT T3.tenant_id,
T3.ID,
T3.NAME,
T3.gender_enum,
T3.py_str,
T3.wb_str
FROM (
SELECT T1.tenant_id,
T1.ID,
T1.NAME,
T1.gender_enum,
T1.py_str,
T1.wb_str
FROM adm_practitioner AS T1
WHERE T1.delete_flag = '0'
AND EXISTS(SELECT 1
FROM adm_practitioner_role AS T2
WHERE T2.practitioner_id = T1.ID
AND T2.org_id = #{orgId}
AND T2.ROLE_code = #{RoleCode})
) AS T3
${ew.customSqlSegment}
</select>
<select id="getNumByPatientIdAndOrganizationId" resultType="Integer">
SELECT COUNT
(1)
FROM adm_encounter
WHERE delete_flag = '0'
AND patient_id = #{patientId}
AND service_type_id = #{serviceTypeId}
AND status_enum != #{cancelled}
AND create_time
> CURRENT_DATE
</select>
<select id="getCurrentDayEncounter" resultType="com.openhis.web.chargemanage.dto.CurrentDayEncounterDto">
SELECT T9.tenant_id,
T9.encounter_id,
T9.organization_id,
T9.organization_name,
T9.healthcare_name,
T9.practitioner_user_id,
T9.practitioner_name,
T9.contract_name,
T9.patient_id,
T9.patient_name,
T9.gender_enum,
T9.id_card,
T9.status_enum,
T9.register_time,
T9.total_price,
T9.account_name,
T9.enterer_name,
T9.charge_item_ids,
T9.payment_id,
T9.picture_url,
T9.birth_date
from (
SELECT T1.tenant_id AS tenant_id,
T1.id AS encounter_id,
T1.organization_id AS organization_id,
T2.NAME AS organization_name,
T3.NAME AS healthcare_name,
T5.user_id AS practitioner_user_id,
T5.NAME AS practitioner_name,
T7.contract_name AS contract_name,
T8.id AS patient_id,
T8.NAME AS patient_name,
T8.gender_enum AS gender_enum,
T8.id_card AS id_card,
T1.status_enum AS status_enum,
T1.create_time AS register_time,
T10.total_price,
T11."name" AS account_name,
T12."name" AS enterer_name,
T13.charge_item_ids,
T13.id AS payment_id,
ai.picture_url AS picture_url,
T8.birth_date AS birth_date
FROM adm_encounter AS T1
LEFT JOIN adm_organization AS T2 ON T1.organization_id = T2.ID AND T2.delete_flag = '0'
LEFT JOIN adm_healthcare_service AS T3 ON T1.service_type_id = T3.ID AND T3.delete_flag = '0'
LEFT JOIN (
SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY encounter_id ORDER BY create_time ASC) AS rn
FROM adm_encounter_participant
WHERE delete_flag = '0'
AND tenant_id = 1
AND type_code = #{participantType}
) t
WHERE rn = 1
) AS T4 ON T1.ID = T4.encounter_id
LEFT JOIN adm_practitioner AS T5 ON T5.ID = T4.practitioner_id AND T5.delete_flag = '0'
LEFT JOIN adm_account AS T6
ON T1.ID = T6.encounter_id AND T6.delete_flag = '0' AND T6.encounter_flag = '1'
LEFT JOIN fin_contract AS T7 ON T6.contract_no = T7.bus_no AND T7.delete_flag = '0'
LEFT JOIN adm_patient AS T8 ON T1.patient_id = T8.ID AND T8.delete_flag = '0'
LEFT JOIN adm_charge_item AS T10 ON T1.id = T10.encounter_id AND T10.delete_flag = '0'
LEFT JOIN adm_account AS T11 ON T10.account_id = T11.id AND T11.delete_flag = '0'
LEFT JOIN adm_practitioner AS T12 ON T12.ID = T10.enterer_id AND T12.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation T13
ON T10.id::TEXT = ANY(string_to_array(T13.charge_item_ids,','))
AND T13.delete_flag = '0'
AND T13.status_enum = ${paymentStatus}
LEFT JOIN adm_invoice AS ai
ON ai.reconciliation_id = T13.id AND ai.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND T1.class_enum = #{classEnum}
-- AND T1.create_time
-- > CURRENT_DATE
AND T10.context_enum = #{register}
) AS T9
${ew.customSqlSegment}
ORDER BY T9.register_time DESC
</select>
<select id="getTmpActivityList" resultType="com.openhis.web.personalization.dto.ActivityDeviceDto">
SELECT dev_act_id,
quantity
FROM tmp_activity_device
WHERE delete_flag = '0'
AND item_no = #{itemId}
AND dev_act_table = #{devActable}
</select>
</mapper>