版本更新

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,498 @@
<?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.doctorstation.mapper.DoctorStationAdviceAppMapper">
<select id="getAdviceBaseInfo" resultType="com.openhis.web.doctorstation.dto.AdviceBaseDto">
SELECT abi.tenant_id,
abi.advice_type,
abi.category_code,
abi.pharmacology_category_code,
abi.part_percent,
abi.unit_conversion_ratio,
abi.part_attribute_enum,
abi.tho_part_attribute_enum,
abi.skin_test_flag,
abi.inject_flag,
abi.advice_definition_id,
abi.advice_name,
abi.advice_bus_no,
abi.py_str,
abi.wb_str,
abi.yb_no,
abi.product_name,
abi.activity_type,
abi.unit_code,
abi.min_unit_code,
abi.volume,
abi.method_code,
abi.rate_code,
abi.org_id,
abi.location_id,
abi.dose,
abi.dose_unit_code,
abi.supplier,
abi.manufacturer,
abi.charge_item_definition_id,
abi.advice_table_name,
abi.position_id,
abi.restricted_flag,
abi.restricted_scope
from (
<if test="adviceTypes == null or adviceTypes.contains(1)">
SELECT T1.tenant_id,
1 AS advice_type,
T1.category_code AS category_code,
T1.pharmacology_category_code AS pharmacology_category_code,
T1.part_percent AS part_percent,
T1.unit_conversion_ratio AS unit_conversion_ratio,
T1.part_attribute_enum AS part_attribute_enum,
T1.tho_part_attribute_enum AS tho_part_attribute_enum,
T1.skin_test_flag AS skin_test_flag,
T1.inject_flag AS inject_flag,
T1.ID AS advice_definition_id,
T1.NAME AS advice_name,
T1.bus_no AS advice_bus_no,
T1.py_str AS py_str,
T1.wb_str AS wb_str,
T1.yb_no AS yb_no,
T1.merchandise_name AS product_name,
0 AS activity_type,
T1.unit_code AS unit_code,
T1.min_unit_code AS min_unit_code,
T2.total_volume AS volume,
T2.method_code AS method_code,
T2.rate_code AS rate_code,
T2.org_id AS org_id,
T2.location_id AS location_id,
CAST(T2.dose AS TEXT) AS dose,
T2.dose_unit_code AS dose_unit_code,
T3.NAME AS supplier,
T1.manufacturer_text AS manufacturer,
T5.id AS charge_item_definition_id,
T5.instance_table AS advice_table_name,
T6.def_location_id AS position_id,
t1.restricted_flag AS restricted_flag,
t1.restricted_scope AS restricted_scope
FROM med_medication_definition AS t1
INNER JOIN med_medication AS T2 ON T2.medication_def_id = T1.ID
AND T2.delete_flag = '0' AND T2.status_enum = #{statusEnum}
LEFT JOIN adm_supplier AS T3
ON T3.ID = T1.supply_id
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T5 ON T5.instance_id = T1.ID
AND T5.delete_flag = '0'
LEFT JOIN adm_organization_location AS T6
ON T6.distribution_category_code = T1.category_code
AND T6.delete_flag = '0' AND T6.organization_id = #{organizationId} AND
(CURRENT_TIME :: time (6) BETWEEN T6.start_time AND T6.end_time)
WHERE T1.delete_flag = '0'
AND T2.status_enum = #{statusEnum}
<if test="pricingFlag ==1">
AND 1 = 2
</if>
<if test="adviceDefinitionIdParamList != null and !adviceDefinitionIdParamList.isEmpty()">
AND T1.id IN
<foreach collection="adviceDefinitionIdParamList" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
AND T5.instance_table = #{medicationTableName}
</if>
<if test="adviceTypes == null or adviceTypes.contains(1)">
<if test="adviceTypes == null or adviceTypes.contains(2) or adviceTypes.contains(3)">UNION ALL</if>
</if>
<if test="adviceTypes == null or adviceTypes.contains(2)">
SELECT T1.tenant_id,
2 AS advice_type,
T1.category_code AS category_code,
'' AS pharmacology_category_code,
T1.part_percent AS part_percent,
0 AS unit_conversion_ratio,
null AS part_attribute_enum,
null AS tho_part_attribute_enum,
null AS skin_test_flag,
null AS inject_flag,
T1.ID AS advice_definition_id,
T1.NAME AS advice_name,
T1.bus_no AS advice_bus_no,
T1.py_str AS py_str,
T1.wb_str AS wb_str,
T1.yb_no AS yb_no,
'' AS product_name,
0 AS activity_type,
T1.unit_code AS unit_code,
T1.min_unit_code AS min_unit_code,
T1.SIZE AS volume,
'' AS method_code,
'' AS rate_code,
T1.org_id AS org_id,
T1.location_id AS location_id,
'' AS dose,
'' AS dose_unit_code,
T2.NAME AS supplier,
T1.manufacturer_text AS manufacturer,
T4.id AS charge_item_definition_id,
T4.instance_table AS advice_table_name,
T5.def_location_id AS position_id,
0 AS restricted_flag,
'' AS restricted_scope
FROM adm_device_definition AS T1
LEFT JOIN adm_supplier AS T2
ON T2.ID = T1.supply_id
AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T4 ON T4.instance_id = T1.ID
AND T4.delete_flag = '0'
LEFT JOIN adm_organization_location AS T5 ON T5.distribution_category_code = T1.category_code
AND T5.delete_flag = '0' AND T5.organization_id = #{organizationId} AND
(CURRENT_TIME :: time (6) BETWEEN T5.start_time AND T5.end_time)
WHERE T1.delete_flag = '0'
<if test="adviceDefinitionIdParamList != null and !adviceDefinitionIdParamList.isEmpty()">
AND T1.id IN
<foreach collection="adviceDefinitionIdParamList" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
AND T4.instance_table = #{deviceTableName}
AND T1.category_code = #{singleUse}
AND T1.status_enum = #{statusEnum}
</if>
<if test="adviceTypes == null or adviceTypes.contains(2)">
<if test="adviceTypes == null or adviceTypes.contains(3)">UNION ALL</if>
</if>
<if test="adviceTypes == null or adviceTypes.contains(3)">
SELECT T1.tenant_id,
3 AS advice_type,
T1.category_code AS category_code,
'' AS pharmacology_category_code,
1 AS part_percent,
0 AS unit_conversion_ratio,
null AS part_attribute_enum,
null AS tho_part_attribute_enum,
null AS skin_test_flag,
null AS inject_flag,
T1.ID AS advice_definition_id,
T1.NAME AS advice_name,
T1.bus_no AS advice_bus_no,
T1.py_str AS py_str,
T1.wb_str AS wb_str,
T1.yb_no AS yb_no,
'' AS product_name,
T1.type_enum AS activity_type,
'' AS unit_code,
'' AS min_unit_code,
'' AS volume,
'' AS method_code,
'' AS rate_code,
T1.org_id AS org_id,
T1.location_id AS location_id,
'' AS dose,
'' AS dose_unit_code,
'' AS supplier,
'' AS manufacturer,
T2.ID AS charge_item_definition_id,
T2.instance_table AS advice_table_name,
T3.organization_id AS position_id,
0 AS restricted_flag,
'' AS restricted_scope
FROM wor_activity_definition AS T1
LEFT JOIN adm_charge_item_definition AS T2
ON T2.instance_id = T1.ID
AND T2.delete_flag = '0'
LEFT JOIN adm_organization_location AS T3 ON T3.activity_definition_id = T1.ID
AND T3.delete_flag = '0' AND (CURRENT_TIME :: time (6) BETWEEN T3.start_time AND T3.end_time)
WHERE T1.delete_flag = '0'
<if test="pricingFlag ==1">
AND T1.pricing_flag = #{pricingFlag}
</if>
<if test="adviceDefinitionIdParamList != null and !adviceDefinitionIdParamList.isEmpty()">
AND T1.id IN
<foreach collection="adviceDefinitionIdParamList" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
AND T1.status_enum = #{statusEnum}
AND T2.instance_table = #{activityTableName}
</if>
) AS abi
${ew.customSqlSegment}
</select>
<select id="getAdviceInventory" resultType="com.openhis.web.doctorstation.dto.AdviceInventoryDto">
SELECT
T1.id AS inventory_id,
T1.item_id,
T1.item_table,
T1.quantity,
T1.unit_code,
T1.lot_number,
T1.price,
T1.location_id,
T1.location_store_id,
T2.NAME AS location_name
FROM
wor_inventory_item AS T1
LEFT JOIN adm_location AS T2 ON T2.ID = T1.location_id
AND T2.delete_flag = '0'
WHERE
T1.delete_flag = '0'
<if test="locationId != null">
AND T1.location_id = #{locationId}
</if>
<if test="adviceDefinitionIdList != null and !adviceDefinitionIdList.isEmpty()">
AND T1.item_id IN
<foreach collection="adviceDefinitionIdList" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
AND T1.inventory_status_enum = #{status}
AND T1.expiration_date > NOW()
AND T1.item_table IN ( ${SqlCondition} )
order by T1.expiration_date
</select>
<select id="getAdviceDraftInventory" resultType="com.openhis.web.doctorstation.dto.AdviceInventoryDto">
SELECT #{medicationTableName} AS item_table,
T1.medication_id AS item_id,
T1.lot_number,
T1.location_id,
CASE
WHEN T1.unit_code = T2.min_unit_code THEN
T1.quantity
ELSE T1.quantity * T2.part_percent
END AS quantity,
CASE
WHEN T1.unit_code = T2.min_unit_code THEN
T1.unit_code
ELSE T2.min_unit_code
END AS unit_code
FROM med_medication_dispense AS T1
LEFT JOIN med_medication_definition AS T2 ON T2.ID = T1.medication_id
AND T2.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND NOW() &lt; T1.limit_time
AND (T1.status_enum = #{status1} OR T1.status_enum = #{status2})
UNION ALL
SELECT #{deviceTableName} AS item_table,
T1.device_def_id AS item_id,
T1.lot_number,
T1.location_id,
CASE
WHEN T1.unit_code = T2.min_unit_code THEN
T1.quantity
ELSE T1.quantity * T2.part_percent
END AS quantity,
CASE
WHEN T1.unit_code = T2.min_unit_code THEN
T1.unit_code
ELSE T2.min_unit_code
END AS unit_code
FROM wor_device_dispense AS T1
LEFT JOIN adm_device_definition AS T2 ON T2.ID = T1.device_def_id
AND T2.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND NOW() &lt; T1.limit_time
AND (T1.status_enum = #{status1} OR T1.status_enum = #{status2})
</select>
<select id="getChildCharge" resultType="com.openhis.web.doctorstation.dto.AdvicePriceDto">
SELECT
T1.definition_id,
T1.id AS definition_detail_id,
T2.charge_name,
T1.condition_value,
T1.condition_code,
T1.amount AS price
FROM
adm_charge_item_def_detail AS T1
LEFT JOIN adm_charge_item_definition AS T2 ON T2.ID = T1.definition_id
AND T2.delete_flag = '0'
WHERE
T1.delete_flag = '0'
AND T1.condition_code = #{conditionCode}
<if test="chargeItemDefinitionIdList != null and !chargeItemDefinitionIdList.isEmpty()">
AND T1.definition_id IN
<foreach collection="chargeItemDefinitionIdList" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
ORDER BY T1.priority DESC
</select>
<select id="getMainCharge" resultType="com.openhis.web.doctorstation.dto.AdvicePriceDto">
SELECT
id AS definition_id,
charge_name,
price
FROM
adm_charge_item_definition
WHERE
delete_flag = '0'
<if test="chargeItemDefinitionIdList != null and !chargeItemDefinitionIdList.isEmpty()">
AND id IN
<foreach collection="chargeItemDefinitionIdList" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
</select>
<select id="getRequestBaseInfo" resultType="com.openhis.web.doctorstation.dto.RequestBaseDto">
(SELECT 1 AS advice_type,
T1.id AS request_id,
T1.id || '-1' AS unique_key,
T1.practitioner_id AS requester_id,
T1.create_time AS request_time,
CASE WHEN T1.practitioner_id = #{practitionerId} THEN '1' ELSE '0' END AS biz_request_flag,
T1.content_json AS content_json,
T1.skin_test_flag AS skin_test_flag,
T1.infusion_flag AS inject_flag,
T1.group_id AS group_id,
T2.NAME AS advice_name,
T3.total_volume AS volume,
T1.lot_number AS lot_number,
T1.quantity AS quantity,
T1.unit_code AS unit_code,
T1.status_enum AS status_enum,
T1.method_code AS method_code,
T1.rate_code AS rate_code,
T1.dose AS dose,
T1.dose_unit_code AS dose_unit_code,
T4.id AS charge_item_id,
T4.total_price AS total_price,
T4.status_enum AS charge_status,
al.id AS position_id,
al.name AS position_name,
T1.dispense_per_duration AS dispense_per_duration,
T2.part_percent AS part_percent,
ccd.name AS condition_definition_name,
T1.sort_number AS sort_number
FROM med_medication_request AS T1
LEFT JOIN med_medication_definition AS T2 ON T2.ID = T1.medication_id
AND T2.delete_flag = '0'
LEFT JOIN med_medication AS T3 ON T3.medication_def_id = T2.ID
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item AS T4 ON T4.service_id = T1.ID AND T4.delete_flag = '0' AND
T4.service_table = #{MED_MEDICATION_REQUEST}
LEFT JOIN adm_location AS al ON al.ID = T1.perform_location AND al.delete_flag = '0'
LEFT JOIN cli_condition AS cc ON cc.id = T1.condition_id AND cc.delete_flag = '0'
LEFT JOIN cli_condition_definition AS ccd ON ccd.id = cc.definition_id
WHERE T1.delete_flag = '0' AND T1.tcm_flag = 0
<if test="historyFlag == '0'.toString()">
AND T1.encounter_id = #{encounterId}
</if>
<if test="historyFlag == '1'.toString()">
AND T1.patient_id = #{patientId} AND T1.encounter_id != #{encounterId}
</if>
AND T1.refund_medicine_id IS NULL
ORDER BY T1.status_enum,T1.sort_number,T1.group_id)
UNION ALL
(SELECT 2 AS advice_type,
T1.id AS request_id,
T1.id || '-2' AS unique_key,
T1.requester_id AS requester_id,
T1.create_time AS request_time,
CASE WHEN T1.requester_id = #{practitionerId} THEN '1' ELSE '0' END AS biz_request_flag,
T1.content_json AS content_json,
null AS skin_test_flag,
null AS inject_flag,
null AS group_id,
T2.NAME AS advice_name,
T2.SIZE AS volume,
T1.lot_number AS lot_number,
T1.quantity AS quantity,
T1.unit_code AS unit_code,
T1.status_enum AS status_enum,
'' AS method_code,
T1.rate_code AS rate_code,
NULL AS dose,
'' AS dose_unit_code,
T3.id AS charge_item_id,
T3.total_price AS total_price,
T3.status_enum AS charge_status,
al.id AS position_id,
al.name AS position_name,
null AS dispense_per_duration,
T2.part_percent AS part_percent,
'' AS condition_definition_name,
99 AS sort_number
FROM wor_device_request AS T1
LEFT JOIN adm_device_definition AS T2 ON T2.ID = T1.device_def_id
AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item AS T3
ON T3.service_id = T1.ID AND T3.delete_flag = '0' AND
T3.service_table = #{WOR_DEVICE_REQUEST}
LEFT JOIN adm_location AS al ON al.ID = T1.perform_location AND al.delete_flag = '0'
WHERE T1.delete_flag = '0'
<if test="historyFlag == '0'.toString()">
AND T1.encounter_id = #{encounterId}
</if>
<if test="historyFlag == '1'.toString()">
AND T1.patient_id = #{patientId} AND T1.encounter_id != #{encounterId}
</if>
AND T1.refund_device_id IS NULL
ORDER BY T1.status_enum)
UNION ALL
(SELECT 3 AS advice_type,
T1.id AS request_id,
T1.id || '-3' AS unique_key,
T1.requester_id AS requester_id,
T1.create_time AS request_time,
CASE WHEN T1.requester_id = #{practitionerId} THEN '1' ELSE '0' END AS biz_request_flag,
T1.content_json AS content_json,
null AS skin_test_flag,
null AS inject_flag,
null AS group_id,
T2.NAME AS advice_name,
'' AS volume,
'' AS lot_number,
T1.quantity AS quantity,
T1.unit_code AS unit_code,
T1.status_enum AS status_enum,
'' AS method_code,
'' AS rate_code,
NULL AS dose,
'' AS dose_unit_code,
T3.id AS charge_item_id,
T3.total_price AS total_price,
T3.status_enum AS charge_status,
ao.id AS position_id,
ao.name AS position_name,
null AS dispense_per_duration,
1 AS part_percent,
'' AS condition_definition_name,
99 AS sort_number
FROM wor_service_request AS T1
LEFT JOIN wor_activity_definition AS T2
ON T2.ID = T1.activity_id
AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item AS T3 ON T3.service_id = T1.ID AND T3.delete_flag = '0' AND
T3.service_table = #{WOR_SERVICE_REQUEST}
LEFT JOIN adm_organization AS ao ON ao.ID = T1.org_id AND ao.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND T1.based_on_table is null
<if test="historyFlag == '0'.toString()">
AND T1.encounter_id = #{encounterId}
</if>
<if test="historyFlag == '1'.toString()">
AND T1.patient_id = #{patientId} AND T1.encounter_id != #{encounterId}
</if>
ORDER BY T1.status_enum)
</select>
<select id="getEncounterContract" resultType="com.openhis.web.doctorstation.dto.EncounterContractDto">
SELECT aa.id AS account_id,
fc.contract_name,
fc.bus_no
FROM adm_account aa
LEFT JOIN fin_contract AS fc ON fc.bus_no = aa.contract_no
AND fc.delete_flag = '0'
WHERE aa.delete_flag = '0'
AND aa.encounter_id = #{encounterId}
</select>
</mapper>

View File

@@ -0,0 +1,158 @@
<?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.doctorstation.mapper.DoctorStationChineseMedicalAppMapper">
<select id="getTcmEncounterDiagnosis" resultType="com.openhis.web.doctorstation.dto.DiagnosisQueryDto">
SELECT T1.id AS encounter_diagnosis_id,
T1.condition_id,
T1.syndrome_group_no,
T2.definition_id,
T3.source_enum,
T3.NAME,
T1.maindise_flag,
T1.diag_srt_no,
T1.med_type_code,
T2.verification_status_enum,
T2.yb_no
FROM adm_encounter_diagnosis AS T1
LEFT JOIN cli_condition AS T2 ON T2.ID = T1.condition_id
AND T2.delete_flag = '0' AND T2.tcm_flag = 1
LEFT JOIN cli_condition_definition AS T3 ON t3.ID = T2.definition_id
AND T3.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND T1.tcm_flag = 1
AND T1.encounter_id = #{encounterId}
ORDER BY T1.diag_srt_no
</select>
<select id="getTcmRequestBaseInfo" resultType="com.openhis.web.doctorstation.dto.RequestBaseDto">
SELECT 1 AS advice_type,
T1.id AS request_id,
T1.id || '-1' AS unique_key,
T1.prescription_no AS prescription_no,
T1.practitioner_id AS requester_id,
T1.create_time AS request_time,
CASE WHEN T1.practitioner_id = #{practitionerId} THEN '1' ELSE '0' END AS biz_request_flag,
T1.content_json AS content_json,
T1.skin_test_flag AS skin_test_flag,
T1.infusion_flag AS inject_flag,
T1.group_id AS group_id,
T2.NAME AS advice_name,
T3.total_volume AS volume,
T1.lot_number AS lot_number,
T1.quantity AS quantity,
T1.unit_code AS unit_code,
T1.status_enum AS status_enum,
T1.method_code AS method_code,
T1.rate_code AS rate_code,
T1.dose AS dose,
T1.dose_unit_code AS dose_unit_code,
T4.id AS charge_item_id,
T4.total_price AS total_price,
T4.status_enum AS charge_status,
al.id AS position_id,
al.name AS position_name,
T1.dispense_per_duration AS dispense_per_duration,
T1.chinese_herbs_dose_quantity AS chinese_herbs_dose_quantity,
T1.suffering_flag AS suffering_flag,
T2.part_percent AS part_percent,
ccd.name AS condition_definition_name
FROM med_medication_request AS T1
LEFT JOIN med_medication_definition AS T2 ON T2.ID = T1.medication_id
AND T2.delete_flag = '0'
LEFT JOIN med_medication AS T3 ON T3.medication_def_id = T2.ID
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item AS T4 ON T4.service_id = T1.ID AND T4.delete_flag = '0' AND
T4.service_table = #{MED_MEDICATION_REQUEST}
LEFT JOIN adm_location AS al ON al.ID = T1.perform_location AND al.delete_flag = '0'
LEFT JOIN cli_condition AS cc ON cc.id = T1.condition_id AND cc.delete_flag = '0'
LEFT JOIN cli_condition_definition AS ccd ON ccd.id = cc.definition_id
WHERE T1.delete_flag = '0' AND T1.tcm_flag = 1
<if test="historyFlag == '0'.toString()">
AND T1.encounter_id = #{encounterId}
</if>
<if test="historyFlag == '1'.toString()">
AND T1.patient_id = #{patientId} AND T1.encounter_id != #{encounterId}
</if>
AND T1.refund_medicine_id IS NULL
ORDER BY T1.group_id,T1.prescription_no, T1.status_enum
</select>
<select id="getTcmRequestHistoryInfo" resultType="com.openhis.web.doctorstation.dto.RequestBaseDto">
SELECT 1 AS advice_type,
T1.id AS request_id,
T1.id || '-1' AS unique_key,
T1.prescription_no AS prescription_no,
T1.practitioner_id AS requester_id,
T1.create_time AS request_time,
CASE WHEN T1.practitioner_id = #{practitionerId} THEN '1' ELSE '0' END AS biz_request_flag,
T1.content_json AS content_json,
T1.skin_test_flag AS skin_test_flag,
T1.infusion_flag AS inject_flag,
T1.group_id AS group_id,
T2.NAME AS advice_name,
T3.total_volume AS volume,
T1.lot_number AS lot_number,
T1.quantity AS quantity,
T1.unit_code AS unit_code,
T1.status_enum AS status_enum,
T1.method_code AS method_code,
T1.rate_code AS rate_code,
T1.dose AS dose,
T1.dose_unit_code AS dose_unit_code,
T4.id AS charge_item_id,
T4.total_price AS total_price,
T4.status_enum AS charge_status,
al.id AS position_id,
al.name AS position_name,
T1.dispense_per_duration AS dispense_per_duration,
T1.chinese_herbs_dose_quantity AS chinese_herbs_dose_quantity,
T1.suffering_flag AS suffering_flag,
T2.part_percent AS part_percent,
ccd.name AS condition_definition_name
FROM med_medication_request AS T1
LEFT JOIN med_medication_definition AS T2 ON T2.ID = T1.medication_id
AND T2.delete_flag = '0'
LEFT JOIN med_medication AS T3 ON T3.medication_def_id = T2.ID
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item AS T4 ON T4.service_id = T1.ID AND T4.delete_flag = '0' AND
T4.service_table = #{MED_MEDICATION_REQUEST}
LEFT JOIN adm_location AS al ON al.ID = T1.perform_location AND al.delete_flag = '0'
LEFT JOIN cli_condition AS cc ON cc.id = T1.condition_id AND cc.delete_flag = '0'
LEFT JOIN cli_condition_definition AS ccd ON ccd.id = cc.definition_id
WHERE T1.delete_flag = '0' AND T1.tcm_flag = 1
<if test="historyFlag == '0'.toString()">
AND T1.encounter_id = #{encounterId}
</if>
<if test="historyFlag == '1'.toString()">
AND T1.patient_id = #{patientId} AND T1.encounter_id != #{encounterId}
</if>
AND T1.refund_medicine_id IS NULL
ORDER BY T1.group_id,T1.prescription_no, T1.status_enum
</select>
<select id="getConditionIds" resultType="long">
SELECT condition_id
FROM adm_encounter_diagnosis
WHERE delete_flag = '0'
AND syndrome_group_no = #{syndromeGroupNo}
</select>
<select id="getAdviceNumByConditionIds" resultType="integer">
SELECT
count(1)
FROM
med_medication_request
WHERE
delete_flag = '0'
<if test="conditionIds != null and !conditionIds.isEmpty()">
AND condition_id IN
<foreach collection="conditionIds" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
</select>
</mapper>

View File

@@ -0,0 +1,168 @@
<?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.doctorstation.mapper.DoctorStationDiagnosisAppMapper">
<select id="getDiagnosisBelongBindingPage" resultType="com.openhis.web.doctorstation.dto.DiagnosisBelongBindingDto">
SELECT T5.tenant_id,
T5.ID,
T5.object_id,
T5.definition_id,
T5.binding_enum,
T5.definition_name,
T5.object_name
from (SELECT T1.tenant_id,
T1.ID,
T1.object_id,
T1.definition_id,
T1.binding_enum,
T2.NAME AS definition_name,
CASE
WHEN T1.binding_enum = #{bindingType1} THEN
T3.user_name
WHEN T1.binding_enum = #{bindingType2} THEN
T4.NAME
END AS object_name
FROM cli_diagnosis_belong_binding AS T1
LEFT JOIN cli_condition_definition AS T2 ON T1.definition_id = T2.ID
AND T2.delete_flag = '0'
LEFT JOIN sys_user AS T3 ON T1.binding_enum = #{bindingType1}
AND T1.object_id = T3.user_id
LEFT JOIN adm_organization AS T4 ON T1.binding_enum = #{bindingType2}
AND T1.object_id = T4.ID
WHERE T1.delete_flag = '0'
ORDER BY object_name) AS T5
${ew.customSqlSegment}
</select>
<select id="getPatientHistoryList" resultType="com.openhis.web.doctorstation.dto.ConditionDefinitionMetadata">
SELECT T1.ID AS definition_id,
T1.source_enum,
T1.condition_code,
T1.NAME,
T1.yb_flag,
T1.yb_no,
T1.yb_match_flag
FROM cli_condition_definition AS T1
WHERE T1.delete_flag = '0'
AND T1.status_enum = #{statusEnum}
AND EXISTS(
SELECT 1
FROM cli_condition AS T2
WHERE T2.delete_flag = '0'
AND t2.tcm_flag = 0
AND T2.definition_id IS NOT NULL
AND T2.patient_id = #{patientId}
AND T2.definition_id = T1.ID
)
</select>
<select id="getDoctorCommonUseList" resultType="com.openhis.web.doctorstation.dto.ConditionDefinitionMetadata">
SELECT T1.ID AS definition_id,
T1.source_enum,
T1.condition_code,
T1.NAME,
T1.yb_flag,
T1.yb_no,
T1.yb_match_flag
FROM cli_condition_definition AS T1
JOIN (SELECT definition_id
FROM cli_condition
WHERE delete_flag = '0'
AND tcm_flag = 0
AND definition_id IS NOT NULL
AND recorder_id = #{practitionerId}
GROUP BY definition_id LIMIT 10) AS T2 ON T1.ID = T2.definition_id
WHERE T1.delete_flag = '0'
AND T1.status_enum = #{statusEnum}
</select>
<select id="getUserPersonalList" resultType="com.openhis.web.doctorstation.dto.ConditionDefinitionMetadata">
SELECT T2.ID,
T2.definition_id,
T1.source_enum,
T1.condition_code,
T1.NAME,
T1.yb_flag,
T1.yb_no,
T1.yb_match_flag
FROM cli_condition_definition AS T1
JOIN (SELECT id, definition_id
FROM cli_diagnosis_belong_binding
WHERE delete_flag = '0'
AND binding_enum = #{bindingEnum}
AND object_id = #{userId}) AS T2 ON T1.ID = T2.definition_id
WHERE T1.delete_flag = '0'
AND T1.status_enum = #{statusEnum}
</select>
<select id="getOrganizationList" resultType="com.openhis.web.doctorstation.dto.ConditionDefinitionMetadata">
SELECT T2.ID,
T2.definition_id,
T1.source_enum,
T1.condition_code,
T1.NAME,
T1.yb_flag,
T1.yb_no,
T1.yb_match_flag
FROM cli_condition_definition AS T1
JOIN (SELECT id, definition_id
FROM cli_diagnosis_belong_binding
WHERE delete_flag = '0'
AND binding_enum = #{bindingEnum}
<if test="currentUserOrganizationId != null">
AND object_id = #{currentUserOrganizationId}
</if>
) AS T2 ON T1.ID = T2.definition_id
WHERE T1.delete_flag = '0'
AND T1.status_enum = #{statusEnum}
</select>
<select id="getEncounterDiagnosis" resultType="com.openhis.web.doctorstation.dto.DiagnosisQueryDto">
SELECT T1.id AS encounter_diagnosis_id,
T1.condition_id,
T2.definition_id,
T3.source_enum,
T3.NAME,
T1.maindise_flag,
T1.diag_srt_no,
T1.med_type_code,
T1.diagnosis_desc,
T2.verification_status_enum,
T2.yb_no
FROM adm_encounter_diagnosis AS T1
LEFT JOIN cli_condition AS T2 ON T2.ID = T1.condition_id
AND T2.delete_flag = '0' AND T2.tcm_flag = 0
LEFT JOIN cli_condition_definition AS T3 ON t3.ID = T2.definition_id
AND T3.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND T1.tcm_flag = 0
AND T1.encounter_id = #{encounterId}
</select>
<select id="getAdviceNumByConditionId" resultType="Integer">
SELECT SUM
(count_result) AS total_count
FROM (
SELECT COUNT
(1) AS count_result
FROM med_medication_request
WHERE delete_flag = '0'
AND condition_id = #{conditionId}
UNION ALL
SELECT COUNT
(1)
FROM wor_device_request
WHERE delete_flag = '0'
AND condition_id = #{conditionId}
UNION ALL
SELECT COUNT
(1)
FROM wor_service_request
WHERE delete_flag = '0'
AND condition_id = #{conditionId}
) AS counts
</select>
</mapper>

View File

@@ -0,0 +1,494 @@
<?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.doctorstation.mapper.DoctorStationElepPrescriptionMapper">
<select id="selectCatalogDrugInfoByNo" resultType="com.openhis.ybcatalog.domain.CatalogDrugInfo">
SELECT T1.medical_catalog_code,
T1.drug_trade_name,
T1.generic_name_id,
T1.drug_generic_name,
T1.chemical_name,
T1.alias,
T1.english_name,
T1.registered_name,
T1.drug_supervision_code,
T1.drug_form,
T1.drug_form_name,
T1.drug_category,
T1.drug_category_name,
T1.drug_specification,
T1.drug_spec_code,
T1.registered_form,
T1.registered_spec,
T1.registered_spec_code,
T1.dosage,
T1.frequency,
T1.acid_base,
T1.national_drug_code,
T1.usage,
T1.tcm_flag,
T1.production_area_type,
T1.production_area_name,
T1.pricing_unit_type,
T1.otc_flag,
T1.otc_flag_name,
T1.packaging_material,
T1.packaging_material_name,
T1.packaging_spec,
T1.packaging_quantity,
T1.function_indication,
T1.administration_route,
T1.instructions,
T1.start_date,
T1.end_date,
T1.min_use_unit,
T1.min_sale_unit,
T1.min_measurement_unit,
T1.min_package_quantity,
T1.min_package_unit,
T1.min_preparation_unit,
T1.min_package_unit_name,
T1.min_preparation_unit_name,
T1.conversion_ratio,
T1.shelf_life,
T1.min_pricing_unit,
T1.wubi_code,
T1.pinyin_code,
T1.repackager,
T1.manufacturer_code,
T1.manufacturer_name,
T1.special_price_limit_flag,
T1.special_drug_flag,
T1.use_restriction,
T1.use_restriction_flag,
T1.registration_cert_no,
T1.reg_cert_start_date,
T1.reg_cert_end_date,
T1.approval_no,
T1.approval_start_date,
T1.approval_end_date,
T1.market_status,
T1.market_status_name,
T1.reg_document_archive,
T1.supp_application_archive,
T1.national_insurance_notes,
T1.essential_drug_flag_name,
T1.essential_drug_flag,
T1.vat_adjustment_flag,
T1.vat_adjustment_name,
T1.listed_drug_flag,
T1.negotiation_drug_flag,
T1.negotiation_drug_name,
T1.nhc_drug_code,
T1.remarks,
T1.valid_flag,
T1.unique_record_id,
T1.created_at,
T1.updated_at,
T1.version,
T1.version_name,
T1.pediatric_use,
T1.company_name,
T1.generic_evaluation_flag,
T1.distribution_company,
T1.distribution_contact,
T1.distribution_auth_archive,
T1.insurance_form,
T1.insurance_class,
T1.marketing_authorization_holder,
T1.release_flag,
T1.transmission_data_id,
T1.valid_from,
T1.valid_to
FROM yb_catalog_drug_info T1
WHERE T1.medical_catalog_code = #{medicationNo}
AND T1.version = #{version}
AND T1.valid_flag = '1'
</select>
<select id="selectCatalogDrugInfo" resultType="com.openhis.ybcatalog.domain.CatalogDrugInfo">
SELECT T3.medical_catalog_code,
T3.drug_trade_name,
T3.generic_name_id,
T3.drug_generic_name,
T3.chemical_name,
T3.alias,
T3.english_name,
T3.registered_name,
T3.drug_supervision_code,
T3.drug_form,
T3.drug_form_name,
T3.drug_category,
T3.drug_category_name,
T3.drug_specification,
T3.drug_spec_code,
T3.registered_form,
T3.registered_spec,
T3.registered_spec_code,
T3.dosage,
T3.frequency,
T3.acid_base,
T3.national_drug_code,
T3.usage,
T3.tcm_flag,
T3.production_area_type,
T3.production_area_name,
T3.pricing_unit_type,
T3.otc_flag,
T3.otc_flag_name,
T3.packaging_material,
T3.packaging_material_name,
T3.packaging_spec,
T3.packaging_quantity,
T3.function_indication,
T3.administration_route,
T3.instructions,
T3.start_date,
T3.end_date,
T3.min_use_unit,
T3.min_sale_unit,
T3.min_measurement_unit,
T3.min_package_quantity,
T3.min_package_unit,
T3.min_preparation_unit,
T3.min_package_unit_name,
T3.min_preparation_unit_name,
T3.conversion_ratio,
T3.shelf_life,
T3.min_pricing_unit,
T3.wubi_code,
T3.pinyin_code,
T3.repackager,
T3.manufacturer_code,
T3.manufacturer_name,
T3.special_price_limit_flag,
T3.special_drug_flag,
T3.use_restriction,
T3.use_restriction_flag,
T3.registration_cert_no,
T3.reg_cert_start_date,
T3.reg_cert_end_date,
T3.approval_no,
T3.approval_start_date,
T3.approval_end_date,
T3.market_status,
T3.market_status_name,
T3.reg_document_archive,
T3.supp_application_archive,
T3.national_insurance_notes,
T3.essential_drug_flag_name,
T3.essential_drug_flag,
T3.vat_adjustment_flag,
T3.vat_adjustment_name,
T3.listed_drug_flag,
T3.negotiation_drug_flag,
T3.negotiation_drug_name,
T3.nhc_drug_code,
T3.remarks,
T3.valid_flag,
T3.unique_record_id,
T3.created_at,
T3.updated_at,
T3.version,
T3.version_name,
T3.pediatric_use,
T3.company_name,
T3.generic_evaluation_flag,
T3.distribution_company,
T3.distribution_contact,
T3.distribution_auth_archive,
T3.insurance_form,
T3.insurance_class,
T3.marketing_authorization_holder,
T3.release_flag,
T3.transmission_data_id,
T3.valid_from,
T3.valid_to,
T3.tenant_id
FROM (SELECT T1.medical_catalog_code,
T1.drug_trade_name,
T1.generic_name_id,
T1.drug_generic_name,
T1.chemical_name,
T1.alias,
T1.english_name,
T1.registered_name,
T1.drug_supervision_code,
T1.drug_form,
T1.drug_form_name,
T1.drug_category,
T1.drug_category_name,
T1.drug_specification,
T1.drug_spec_code,
T1.registered_form,
T1.registered_spec,
T1.registered_spec_code,
T1.dosage,
T1.frequency,
T1.acid_base,
T1.national_drug_code,
T1.usage,
T1.tcm_flag,
T1.production_area_type,
T1.production_area_name,
T1.pricing_unit_type,
T1.otc_flag,
T1.otc_flag_name,
T1.packaging_material,
T1.packaging_material_name,
T1.packaging_spec,
T1.packaging_quantity,
T1.function_indication,
T1.administration_route,
T1.instructions,
T1.start_date,
T1.end_date,
T1.min_use_unit,
T1.min_sale_unit,
T1.min_measurement_unit,
T1.min_package_quantity,
T1.min_package_unit,
T1.min_preparation_unit,
T1.min_package_unit_name,
T1.min_preparation_unit_name,
T1.conversion_ratio,
T1.shelf_life,
T1.min_pricing_unit,
T1.wubi_code,
T1.pinyin_code,
T1.repackager,
T1.manufacturer_code,
T1.manufacturer_name,
T1.special_price_limit_flag,
T1.special_drug_flag,
T1.use_restriction,
T1.use_restriction_flag,
T1.registration_cert_no,
T1.reg_cert_start_date,
T1.reg_cert_end_date,
T1.approval_no,
T1.approval_start_date,
T1.approval_end_date,
T1.market_status,
T1.market_status_name,
T1.reg_document_archive,
T1.supp_application_archive,
T1.national_insurance_notes,
T1.essential_drug_flag_name,
T1.essential_drug_flag,
T1.vat_adjustment_flag,
T1.vat_adjustment_name,
T1.listed_drug_flag,
T1.negotiation_drug_flag,
T1.negotiation_drug_name,
T1.nhc_drug_code,
T1.remarks,
T1.valid_flag,
T1.unique_record_id,
T1.created_at,
T1.updated_at,
T1.version,
T1.version_name,
T1.pediatric_use,
T1.company_name,
T1.generic_evaluation_flag,
T1.distribution_company,
T1.distribution_contact,
T1.distribution_auth_archive,
T1.insurance_form,
T1.insurance_class,
T1.marketing_authorization_holder,
T1.release_flag,
T1.transmission_data_id,
T1.valid_from,
T1.valid_to,
1 AS tenant_id
FROM yb_catalog_drug_info T1
INNER JOIN (
SELECT medical_catalog_code, MAX(version) AS max_version
FROM yb_catalog_drug_info
WHERE valid_flag = '1'
GROUP BY medical_catalog_code
) T2
ON T1.medical_catalog_code = T2.medical_catalog_code AND
T1.version = T2.max_version
WHERE T1.valid_flag = '1') AS T3
${ew.customSqlSegment}
</select>
<select id="selectElepPrescriptionInfo" resultType="com.openhis.web.doctorstation.dto.ElepPrescriptionInfoDto">
SELECT tenant_id,
prescription_no, --处方号
ipt_otp_no, --门诊号
department_ward, --科室病区
validity_days, --有效天数
status_enum, --状态
practitioner_name, --开方医生名
prsc_dept_name, --开单科室
MIN(prsc_time) AS prsc_time, --处方开立日期
med_status, --取药状态
extension_reason, --延长原因
quash_reason, --撤销原因
condition_name, --诊断名
rx_type_code --处方类别
FROM (SELECT T1.tenant_id,
T1.prescription_no, --处方号
T1.ipt_otp_no, --门诊号
T1.department_ward, --科室病区
T1.validity_days, --有效天数
T1.status_enum, --状态
T2.name AS practitioner_name, --开方医生名
T3.name AS prsc_dept_name, --开单科室
T1.issue_time AS prsc_time, --处方开立日期
CASE
WHEN (T4.rx_used_stas_codg IN ('1', '2')) THEN T4.rx_used_stas_name
ELSE '未使用'
END AS med_status, --取药状态
T1.extension_reason, --延长原因
T1.quash_reason, --撤销原因
T6.name AS condition_name, --诊断名
T1.rx_type_code --处方类别
FROM elep_medication_request AS T1
LEFT JOIN adm_practitioner AS T2
ON T1.prescribing_dr_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_organization AS T3
ON T1.org_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN yb_elep_medresult_info AS T4
ON T1.hi_rxno = T4.hi_rxno
LEFT JOIN cli_condition AS T5
ON T1.condition_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN cli_condition_definition AS T6
ON T5.definition_id = T6.id
AND T6.delete_flag = '0'
WHERE T1.patient_id = #{patientId}
AND T1.delete_flag = '0')
GROUP BY tenant_id,
prescription_no,
ipt_otp_no,
department_ward,
validity_days,
status_enum,
practitioner_name,
prsc_dept_name,
med_status,
extension_reason,
quash_reason,
condition_name,
rx_type_code
ORDER BY prsc_time DESC
</select>
<select id="selectMedicationInfo" resultType="com.openhis.web.doctorstation.dto.ElepMedicationInfoDto">
SELECT T1.id,
T2.medical_catalog_code AS medication_id, --药品id
T2.registered_name AS medication_name, --药品名
T2.drug_specification, --药品规格
T2.manufacturer_name, --生产厂家
T1.med_dosage, --药品剂量
T1.med_dosage_unit_code, --药品剂量单位
T1.med_frequency, --使用频次
T1.med_route, --途径
T1.quantity, --请求数量
T1.unit_code, --请求单位
T1.support_info, --支持用药信息
T1.effective_dose_start, --服药时间(开始)
T1.effective_dose_end, --服药时间(结束)
T1.dispense_interval, --给药间隔
T1.dispense_per_quantity, --单次发药数
T1.dispense_per_duration, --每次发药供应天数
T1.rx_type_code, --处方类别
T1.rx_item_type_code, --处方项目类别
T1.condition_id, --诊断id
T1.version --药品版本号
FROM elep_medication_request AS T1
LEFT JOIN yb_catalog_drug_info AS T2
ON T1.medication_id = T2.medical_catalog_code
AND T1.version = T2.version
WHERE T1.prescription_no = #{prescriptionNo}
AND T1.delete_flag = '0'
GROUP BY T1.id,
T2.medical_catalog_code,
T2.registered_name,
T2.drug_specification,
T2.manufacturer_name,
T1.med_dosage,
T1.med_dosage_unit_code,
T1.med_frequency,
T1.med_route,
T1.quantity,
T1.unit_code,
T1.support_info,
T1.effective_dose_start,
T1.effective_dose_end,
T1.dispense_interval,
T1.dispense_per_quantity,
T1.dispense_per_duration,
T1.rx_type_code,
T1.rx_item_type_code,
T1.condition_id,
T1.version
</select>
<select id="selectSaveInfo" resultType="com.openhis.web.doctorstation.dto.ElepPrescriptionInfoParam">
SELECT T7.id AS organization_id, --医院id
T1.bus_no AS ipt_otp_no, --门诊/住院病历号
CASE
WHEN (T1.class_enum = '2') THEN T3.name
WHEN (T1.class_enum = '1') THEN T5.name
ELSE NULL
END AS department_ward, --科室病区
T6.insutype AS insurance_enum --医保类型
--T8.id AS condition_id --诊断id
FROM adm_encounter AS T1
-- LEFT JOIN adm_encounter_diagnosis AS T2
-- ON T2.encounter_id = T1.id
-- AND T2.maindise_flag = '1'
-- AND T2.delete_flag = '0'
-- LEFT JOIN cli_condition AS T8
-- ON T2.condition_id = T8.id
-- AND T8.delete_flag = '0'
LEFT JOIN adm_organization AS T3
ON T1.organization_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN adm_encounter_location AS T4
ON T4.encounter_id = T1.id
AND T4.status_enum = '2'
AND T4.delete_flag = '0'
LEFT JOIN adm_location AS T5
ON T5.id = T4.location_id
AND T5.delete_flag = '0'
LEFT JOIN yb_clinc_reg AS T6
ON T6.ipt_otp_no = T1.bus_no
LEFT JOIN adm_organization AS T7
ON LEFT (T3.bus_no, 6) = T7.bus_no
AND T7.type_enum = '1'
AND T7.delete_flag = '0'
WHERE T1.id = #{encounterId}
AND T1.delete_flag = '0'
GROUP BY T7.id,
T1.bus_no,
T1.class_enum,
T3.name,
T5.name,
T6.insutype
-- T8.id
</select>
<!-- <select id="selectConditionInfo" resultType="com.openhis.web.doctorstation.dto.ElepPrescriptionInfoParam">-->
<!-- SELECT T3.id AS condition_id, &#45;&#45;诊断id-->
<!-- T4.name AS condition_name &#45;&#45;诊断名-->
<!-- FROM adm_encounter AS T1-->
<!-- LEFT JOIN adm_encounter_diagnosis AS T2-->
<!-- ON T2.encounter_id = T1.id-->
<!-- AND T2.delete_flag = '0'-->
<!-- LEFT JOIN cli_condition AS T3-->
<!-- ON T2.condition_id = T3.id-->
<!-- AND T3.delete_flag = '0'-->
<!-- LEFT JOIN cli_condition_definition AS T4-->
<!-- ON T3.definition_id = T4.id-->
<!-- AND T3.delete_flag = '0'-->
<!-- WHERE T1.id = #{encounterId}-->
<!-- AND T1.delete_flag = '0'-->
<!-- GROUP BY T3.id,-->
<!-- T4.name-->
<!-- </select>-->
</mapper>

View File

@@ -0,0 +1,7 @@
<?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.doctorstation.mapper.DoctorStationEmrAppMapper">
</mapper>

View File

@@ -0,0 +1,183 @@
<?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.doctorstation.mapper.DoctorStationMainAppMapper">
<select id="getPatientInfo" resultType="com.openhis.web.doctorstation.dto.PatientInfoDto">
SELECT
T10.encounter_id,
T10.patient_id,
T10.patient_name,
T10.gender_enum,
T10.id_card,
T10.phone,
T10.birth_date,
T10.status_enum,
T10.allergy_history_flag,
T10.account_id,
T10.type_code,
T10.contract_name,
T10.org_id,
T10.register_time,
T10.reception_time,
T10.practitioner_user_id,
T10.jz_practitioner_user_id
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,
ap.user_id AS jz_practitioner_user_id,
ap.NAME AS jz_practitioner_name,
T6.id AS account_id,
T6.type_code AS type_code,
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,
T8.phone AS phone,
T8.birth_date AS birth_date,
T1.status_enum AS status_enum,
T1.create_time AS register_time,
T1.reception_time AS reception_time,
T1.organization_id AS org_id,
CASE
WHEN T9.patient_id IS NOT NULL THEN 1
ELSE 0
END AS allergy_history_flag
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 adm_encounter_participant AS T4
ON T1.ID = T4.encounter_id AND T4.type_code = #{participantType} AND T4.delete_flag = '0'
LEFT JOIN adm_practitioner AS T5 ON T5.ID = T4.practitioner_id AND T5.delete_flag = '0'
LEFT JOIN adm_encounter_participant AS aep ON T1.ID = aep.encounter_id
AND aep.type_code = #{participantType2}
AND aep.delete_flag = '0'
LEFT JOIN adm_practitioner AS ap ON ap.ID = aep.practitioner_id
AND ap.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 cli_allergy_intolerance AS T9
ON T1.patient_id = T9.patient_id AND T9.clinical_status_enum != #{ClinicalStatus} AND T9.delete_flag = '0'
WHERE
T1.delete_flag = '0'
<!-- 当前登录账号ID 和 当前登录账号所属的科室ID 用于控制数据权限 -->
<if test="userId != null and currentUserOrganizationId != null">
AND ( T5.user_id = #{userId}
OR (T1.organization_id = #{currentUserOrganizationId}) )
</if>
<if test="pricingFlag ==1">
AND T1.status_enum != #{encounterStatus}
</if>
ORDER BY
T1.create_time ) AS T10
${ew.customSqlSegment}
</select>
<select id="getPrescriptionPageInfo" resultType="com.openhis.web.doctorstation.dto.PrescriptionInfoBaseDto">
SELECT ppi.prescription_no,
ppi.encounter_id,
ppi.patient_id,
ppi.patient_name,
ppi.birth_date,
ppi.gender_enum,
ppi.condition_definition_name,
ppi.request_time,
ppi.practitioner_id,
ppi.practitioner_name,
ppi.organization_id,
ppi.bus_no,
ppi.contract_name
FROM (SELECT DISTINCT
ON
( mmr.prescription_no ) mmr.prescription_no, mmr.encounter_id,
mmr.tenant_id,
mmr.patient_id,
ap.NAME AS patient_name,
ap.birth_date AS birth_date,
ap.gender_enum AS gender_enum,
ccd.NAME AS condition_definition_name,
mmr.create_time AS request_time,
mmr.practitioner_id,
aper.NAME AS practitioner_name,
ae.organization_id,
ae.bus_no,
fc.contract_name
FROM
med_medication_request AS mmr
LEFT JOIN adm_encounter AS ae
ON ae.id = mmr.encounter_id AND ae.delete_flag = '0'
LEFT JOIN adm_account AS aa ON aa.encounter_id = ae.id AND aa.delete_flag = '0' AND aa.encounter_flag = 1
LEFT JOIN fin_contract AS fc ON fc.bus_no = aa.contract_no AND fc.delete_flag = '0'
LEFT JOIN adm_patient AS ap
ON ap.ID = mmr.patient_id
AND ap.delete_flag = '0'
LEFT JOIN cli_condition AS cc ON cc.ID = mmr.condition_id
AND cc.delete_flag = '0'
LEFT JOIN cli_condition_definition AS ccd ON ccd.ID = cc.definition_id
LEFT JOIN adm_practitioner AS aper ON aper.ID = mmr.practitioner_id
AND aper.delete_flag = '0'
WHERE
mmr.delete_flag = '0'
AND (mmr.prescription_no LIKE 'P%'
OR mmr.prescription_no LIKE 'C%')
AND mmr.refund_medicine_id IS NULL
ORDER BY
mmr.prescription_no DESC) AS ppi
${ew.customSqlSegment}
</select>
<select id="getPrescriptionDetailInfo" resultType="com.openhis.web.doctorstation.dto.PrescriptionInfoDetailDto">
SELECT mmr.prescription_no,
mmr.ID AS request_id,
mmr.practitioner_id AS requester_id,
mmr.create_time AS request_time,
mmr.group_id AS group_id,
mmd.NAME AS advice_name,
mm.total_volume AS volume,
mmr.lot_number AS lot_number,
mmr.quantity AS quantity,
mmr.unit_code AS unit_code,
mmr.status_enum AS status_enum,
mmr.method_code AS method_code,
mmr.rate_code AS rate_code,
mmr.dose AS dose,
mmr.dose_unit_code AS dose_unit_code,
aci.ID AS charge_item_id,
aci.total_price AS total_price,
aci.status_enum AS charge_status,
al.ID AS position_id,
al.NAME AS position_name,
mmr.dispense_per_duration AS dispense_per_duration,
mmd.part_percent AS part_percent,
ccd.NAME AS condition_definition_name
FROM med_medication_request AS mmr
LEFT JOIN med_medication_definition AS mmd ON mmd.ID = mmr.medication_id
AND mmd.delete_flag = '0'
LEFT JOIN med_medication AS mm ON mm.medication_def_id = mmd.ID
AND mm.delete_flag = '0'
LEFT JOIN adm_charge_item AS aci ON aci.service_id = mmr.ID
AND aci.delete_flag = '0'
LEFT JOIN adm_location AS al ON al.ID = mmr.perform_location
AND al.delete_flag = '0'
LEFT JOIN cli_condition AS cc ON cc.ID = mmr.condition_id
AND cc.delete_flag = '0'
LEFT JOIN cli_condition_definition AS ccd ON ccd.ID = cc.definition_id
WHERE mmr.delete_flag = '0'
<if test="prescriptionNo != null">
AND mmr.prescription_no = #{prescriptionNo}
</if>
<if test="encounterId != null">
AND mmr.encounter_id = #{encounterId}
</if>
</select>
</mapper>

View File

@@ -0,0 +1,106 @@
<?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.doctorstation.mapper.DoctorStationPtDetailsAppMapper">
<!-- 查询患者详情-->
<select id="getPtDetailsList" resultType="com.openhis.web.doctorstation.dto.PatientDetailsDto">
SELECT
p.name,
p.gender_enum,
p.birth_date,
p.phone,
p.address,
p.work_company,
p.nationality_code,
p.marital_status_enum,
p.id_card,
p.country_code,
p.prfs_enum,
p.link_name,
p.link_relation_code,
p.link_telcom,
e.id,
e.bus_no,
e.patient_id,
e.status_enum,
e.class_enum,
e.start_time,
e.end_time,
COALESCE(a.balance_amount, 0) AS balance_amount, -- 账户余额
a.type_code, -- 账户类型
(SELECT SUM(aci.total_price)
FROM adm_charge_item aci
WHERE aci.context_enum = #{contextMed} -- 1药品
AND aci.encounter_id = e.id
--待收费,待结算,已结算
AND aci.status_enum IN
<foreach item="status" collection="statusList" open="(" separator="," close=")">
#{status}
</foreach>
AND aci.delete_flag = '0'
) AS total_medication_price, -- 费用:药品
(SELECT SUM(aci.total_price)
FROM adm_charge_item aci
WHERE aci.context_enum = #{contextDev} -- 2耗材
AND aci.encounter_id = e.id
--待收费,待结算,已结算
AND aci.status_enum IN
<foreach item="status" collection="statusList" open="(" separator="," close=")">
#{status}
</foreach>
AND aci.delete_flag = '0'
) AS total_device_price, -- 费用:耗材
(SELECT SUM(aci.total_price)
FROM adm_charge_item aci
WHERE aci.context_enum = #{contextAct} -- 3项目
--待收费,待结算,已结算
AND aci.status_enum IN
<foreach item="status" collection="statusList" open="(" separator="," close=")">
#{status}
</foreach>
AND aci.delete_flag = '0'
) AS total_activity_price, -- 费用:项目
(SELECT SUM(aci.total_price)
FROM adm_charge_item aci
WHERE aci.encounter_id = e.id
--待收费,待结算,已结算
AND aci.status_enum IN
<foreach item="status" collection="statusList" open="(" separator="," close=")">
#{status}
</foreach>
AND aci.delete_flag = '0'
) AS total_price, -- 费用总计
CASE
WHEN (
SELECT COUNT(*)
FROM cli_allergy_intolerance ai
WHERE ai.patient_id = e.patient_id
AND ai.clinical_status_enum = #{clinicalStatus} -- 阳性
) > 0 THEN 1
ELSE 0
END AS allergy_history_flag, -- 是否有过敏史
(SELECT el.location_id
FROM adm_encounter_location el
WHERE el.encounter_id = e.id
AND el.form_enum = #{form} -- 8病床
LIMIT 1
) AS bed_location_id, -- 床位ID
(SELECT pra.name
FROM adm_encounter_participant ep
LEFT JOIN adm_practitioner pra ON ep.practitioner_id = pra.id
WHERE ep.encounter_id = e.id
AND ep.type_code = #{typeCode} --就诊参与者身份类型是1:接诊医生
ORDER BY ep.create_time DESC
LIMIT 1) AS doctor_name--门诊医生
FROM adm_encounter e
LEFT JOIN adm_patient p ON e.patient_id = p.id AND p.delete_flag = '0'
LEFT JOIN adm_account a ON e.id = a.encounter_id AND a.delete_flag = '0'
<where>
e.delete_flag = '0'
AND e.id = #{encounterId}
</where>
</select>
</mapper>

View File

@@ -0,0 +1,41 @@
<?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.doctorstation.mapper.ReservationRecordAppMapper">
<select id="getReservationInfo" resultType="com.openhis.web.doctorstation.dto.ReservationRecordDto">
SELECT ri.tenant_id,
ri.id,
ri.patient_name,
ri.patient_tel,
ri.chief_complaint,
ri.reservation_time,
ri.org_id,
ri.org_name,
ri.practitioner_id,
ri.practitioner_name,
ri.remark
from (SELECT crr.tenant_id,
crr.id,
crr.patient_name,
crr.patient_tel,
crr.chief_complaint,
crr.reservation_time,
crr.org_id,
ao.NAME AS org_name,
crr.practitioner_id,
ap.NAME AS practitioner_name,
crr.remark
FROM cli_reservation_record AS crr
LEFT JOIN adm_organization AS ao ON ao.ID = crr.org_id
AND ao.delete_flag = '0'
LEFT JOIN adm_practitioner AS ap ON ap.ID = crr.practitioner_id
AND ap.delete_flag = '0'
WHERE crr.delete_flag = '0'
AND (crr.org_id = #{orgId} OR crr.practitioner_id = #{practitionerId})
order by crr.reservation_time) AS ri
${ew.customSqlSegment}
</select>
</mapper>