Compare commits
4 Commits
f655f06871
...
3e650dd041
| Author | SHA1 | Date | |
|---|---|---|---|
| 3e650dd041 | |||
| 773a485114 | |||
| 9675106d4b | |||
| 2c2dbd7542 |
@@ -115,10 +115,6 @@
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>tools.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 阿里JSONè§£æžÂÂ器 -->
|
||||
<!-- io常çâ€Â¨å·¥å…·ç±» -->
|
||||
|
||||
@@ -43,6 +43,12 @@ public class DictUtils {
|
||||
if (StringUtils.isNull(cached)) {
|
||||
return null;
|
||||
}
|
||||
// 如果已经是目标类型,直接返回
|
||||
if (cached instanceof List && ((List<?>) cached).stream().allMatch(e -> e instanceof SysDictData)) {
|
||||
@SuppressWarnings("unchecked")
|
||||
List<SysDictData> result = (List<SysDictData>) cached;
|
||||
return result;
|
||||
}
|
||||
com.fasterxml.jackson.core.type.TypeReference<List<SysDictData>> typeRef =
|
||||
new com.fasterxml.jackson.core.type.TypeReference<List<SysDictData>>() {};
|
||||
ObjectMapper mapper = new ObjectMapper()
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
package com.core.framework.config;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonAutoDetect;
|
||||
import com.fasterxml.jackson.annotation.PropertyAccessor;
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.data.redis.serializer.RedisSerializer;
|
||||
import org.springframework.data.redis.serializer.SerializationException;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
/**
|
||||
* Jackson Redis序列化器 - 兼容fastjson旧格式
|
||||
*
|
||||
* 新数据: 纯JSON (无类型包装),调用方用 convertValue 转换
|
||||
* 旧fastjson: 去除L后缀后按JSON解析
|
||||
* 旧Jackson activateDefaultTyping: 解包 ["className",{data}] 后取data部分
|
||||
*/
|
||||
public class FastjsonCompatibleRedisSerializer implements RedisSerializer<Object> {
|
||||
private static final Logger log = LoggerFactory.getLogger(FastjsonCompatibleRedisSerializer.class);
|
||||
private final ObjectMapper objectMapper;
|
||||
|
||||
/** 全局ObjectMapper,供外部调用方做 convertValue 转换 */
|
||||
private static final ObjectMapper sharedMapper = createMapper();
|
||||
|
||||
public FastjsonCompatibleRedisSerializer() { log.info("[INIT] FastjsonCompatibleRedisSerializer loaded - plain JSON mode");
|
||||
this.objectMapper = createMapper();
|
||||
}
|
||||
|
||||
private static ObjectMapper createMapper() {
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
|
||||
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
return mapper;
|
||||
}
|
||||
|
||||
/** 获取共享ObjectMapper,供 DictUtils / TokenService 等做 convertValue */
|
||||
public static ObjectMapper getSharedMapper() {
|
||||
return sharedMapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] serialize(Object object) throws SerializationException {
|
||||
if (object == null) {
|
||||
return new byte[0];
|
||||
}
|
||||
try {
|
||||
return objectMapper.writeValueAsBytes(object);
|
||||
} catch (Exception e) {
|
||||
throw new SerializationException("Redis序列化失败: " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object deserialize(byte[] bytes) throws SerializationException {
|
||||
if (bytes == null || bytes.length <= 0) {
|
||||
return null;
|
||||
}
|
||||
String json = new String(bytes, StandardCharsets.UTF_8);
|
||||
// 移除fastjson特有的Long L后缀: 123L -> 123
|
||||
String cleaned = json.replaceAll("(\\d+)L", "$1");
|
||||
try {
|
||||
// 处理旧Jackson activateDefaultTyping格式: ["className", {data}]
|
||||
if (cleaned.startsWith("[\"") && cleaned.length() > 10) {
|
||||
com.fasterxml.jackson.databind.JsonNode node = objectMapper.readTree(cleaned);
|
||||
if (node.isArray() && node.size() >= 2 && node.get(0).isTextual()) {
|
||||
// 取data部分(第2个元素),忽略className
|
||||
return objectMapper.treeToValue(node.get(1), Object.class);
|
||||
}
|
||||
}
|
||||
return objectMapper.readValue(cleaned, Object.class);
|
||||
} catch (Exception e) {
|
||||
log.warn("Redis数据反序列化失败(已忽略): {}", e.getMessage());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,51 +4,24 @@ import org.springframework.cache.annotation.CachingConfigurerSupport;
|
||||
import org.springframework.cache.annotation.EnableCaching;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.data.redis.core.ValueOperations;
|
||||
import org.springframework.data.redis.core.script.DefaultRedisScript;
|
||||
import org.springframework.data.redis.serializer.GenericJacksonJsonRedisSerializer;
|
||||
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
||||
import tools.jackson.databind.DeserializationFeature;
|
||||
import tools.jackson.databind.DatabindContext;
|
||||
import tools.jackson.databind.JavaType;
|
||||
import tools.jackson.databind.json.JsonMapper;
|
||||
import tools.jackson.databind.jsontype.PolymorphicTypeValidator;
|
||||
|
||||
@Configuration
|
||||
@EnableCaching
|
||||
public class RedisConfig extends CachingConfigurerSupport {
|
||||
|
||||
private static final PolymorphicTypeValidator ALLOW_ALL = new PolymorphicTypeValidator() {
|
||||
@Override
|
||||
public Validity validateBaseType(DatabindContext ctxt, JavaType baseType) {
|
||||
return Validity.ALLOWED;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Validity validateSubClassName(DatabindContext ctxt, JavaType baseType, String subClassName) {
|
||||
return Validity.ALLOWED;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Validity validateSubType(DatabindContext ctxt, JavaType baseType, JavaType subType) {
|
||||
return Validity.ALLOWED;
|
||||
}
|
||||
};
|
||||
|
||||
@Bean
|
||||
@Primary
|
||||
@SuppressWarnings(value = {"unchecked", "rawtypes"})
|
||||
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
|
||||
RedisTemplate<Object, Object> template = new RedisTemplate<>();
|
||||
template.setConnectionFactory(connectionFactory);
|
||||
|
||||
tools.jackson.databind.ObjectMapper objectMapper = JsonMapper.builder()
|
||||
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
|
||||
.activateDefaultTyping(ALLOW_ALL, tools.jackson.databind.DefaultTyping.NON_FINAL)
|
||||
.build();
|
||||
|
||||
GenericJacksonJsonRedisSerializer serializer = new GenericJacksonJsonRedisSerializer(objectMapper);
|
||||
FastjsonCompatibleRedisSerializer serializer = new FastjsonCompatibleRedisSerializer();
|
||||
|
||||
template.setKeySerializer(new StringRedisSerializer());
|
||||
template.setValueSerializer(serializer);
|
||||
@@ -68,16 +41,18 @@ public class RedisConfig extends CachingConfigurerSupport {
|
||||
return redisScript;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ValueOperations<Object, Object> valueOperations(RedisTemplate<Object, Object> redisTemplate) {
|
||||
return redisTemplate.opsForValue();
|
||||
}
|
||||
|
||||
private String limitScriptText() {
|
||||
return "local key = KEYS[1]\n" + "local count = tonumber(ARGV[1])\n" + "local time = tonumber(ARGV[2])\n"
|
||||
+ "local current = redis.call('get', key);\n" + "if current and tonumber(current) > count then\n"
|
||||
+ " return tonumber(current);\n" + "end\n" + "current = redis.call('incr', key)\n"
|
||||
+ "if tonumber(current) == 1 then\n" + " redis.call('expire', key, time)\n" + "end\n"
|
||||
+ "return tonumber(current);";
|
||||
return "local key = KEYS[1]\n" +
|
||||
"local count = tonumber(ARGV[1])\n" +
|
||||
"local ttl = tonumber(ARGV[2])\n" +
|
||||
"local current = redis.call('get', KEYS[1]);\n" +
|
||||
"if current and tonumber(current) > count then\n" +
|
||||
" return tonumber(current);\n" +
|
||||
"end\n" +
|
||||
"current = redis.call('incr', KEYS[1]);\n" +
|
||||
"if tonumber(current) == 1 then\n" +
|
||||
" redis.call('expire', KEYS[1], ttl);\n" +
|
||||
"end\n" +
|
||||
"return tonumber(current);\n";
|
||||
}
|
||||
}
|
||||
@@ -63,8 +63,28 @@ public class TokenService {
|
||||
// 解析对应的权限以及用户信息
|
||||
String uuid = (String)claims.get(Constants.LOGIN_USER_KEY);
|
||||
String userKey = getTokenKey(uuid);
|
||||
LoginUser user = redisCache.getCacheObject(userKey);
|
||||
return user;
|
||||
Object cached = redisCache.getCacheObject(userKey);
|
||||
if (cached instanceof LoginUser) {
|
||||
return (LoginUser) cached;
|
||||
}
|
||||
// 兼容旧Jackson activateDefaultTyping格式: ["className",{data}]
|
||||
if (cached instanceof java.util.List<?> list && list.size() >= 2 && list.get(0) instanceof String) {
|
||||
Object data = list.get(1);
|
||||
if (data instanceof java.util.Map) {
|
||||
com.fasterxml.jackson.databind.ObjectMapper mapper =
|
||||
new com.fasterxml.jackson.databind.ObjectMapper();
|
||||
mapper.configure(com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
return mapper.convertValue(data, LoginUser.class);
|
||||
}
|
||||
}
|
||||
// 兼容纯JSON格式: LinkedHashMap -> LoginUser
|
||||
if (cached instanceof java.util.Map) {
|
||||
com.fasterxml.jackson.databind.ObjectMapper mapper =
|
||||
new com.fasterxml.jackson.databind.ObjectMapper();
|
||||
mapper.configure(com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
return mapper.convertValue(cached, LoginUser.class);
|
||||
}
|
||||
return null;
|
||||
} catch (Exception e) {
|
||||
log.error("获取用户信息异常'{}'", e.getMessage());
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ public class AntibioticAppServiceImpl implements IAntibioticAppService {
|
||||
}
|
||||
@Override
|
||||
public AntibioticApproval requestApproval(AntibioticApproval a) {
|
||||
a.setStatus("PENDING"); a.setDelFlag("0"); approvalService.save(a); return a;
|
||||
a.setStatus("PENDING"); a.setDeleteFlag("0"); approvalService.save(a); return a;
|
||||
}
|
||||
@Override
|
||||
public void approve(Long id, Long approverId, String approverName, String result) {
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
-- Fix: prescription_intercept_log missing HisBaseEntity columns
|
||||
ALTER TABLE prescription_intercept_log ADD COLUMN IF NOT EXISTS delete_flag VARCHAR(1) DEFAULT '0';
|
||||
ALTER TABLE prescription_intercept_log ADD COLUMN IF NOT EXISTS create_by VARCHAR(64) DEFAULT '';
|
||||
ALTER TABLE prescription_intercept_log ADD COLUMN IF NOT EXISTS create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
|
||||
ALTER TABLE prescription_intercept_log ADD COLUMN IF NOT EXISTS update_by VARCHAR(64) DEFAULT '';
|
||||
ALTER TABLE prescription_intercept_log ADD COLUMN IF NOT EXISTS update_time TIMESTAMP;
|
||||
ALTER TABLE prescription_intercept_log ADD COLUMN IF NOT EXISTS tenant_id BIGINT DEFAULT 1;
|
||||
@@ -0,0 +1,10 @@
|
||||
-- 为 sys_audit_log 和 antibiotic_approval 添加 delete_flag 列以匹配 HisBaseEntity 默认映射
|
||||
-- HisBaseEntity.deleteFlag 映射到 delete_flag (MyBatis-Plus camelCase默认)
|
||||
ALTER TABLE sys_audit_log ADD COLUMN IF NOT EXISTS delete_flag CHAR(1) DEFAULT '0';
|
||||
COMMENT ON COLUMN sys_audit_log.delete_flag IS '删除标识(0=正常,1=删除)';
|
||||
UPDATE sys_audit_log SET delete_flag = '0' WHERE delete_flag IS NULL;
|
||||
|
||||
-- antibiotic_approval 表原有 del_flag 列,新增 delete_flag 列供 HisBaseEntity 使用
|
||||
ALTER TABLE antibiotic_approval ADD COLUMN IF NOT EXISTS delete_flag CHAR(1) DEFAULT '0';
|
||||
COMMENT ON COLUMN antibiotic_approval.delete_flag IS '删除标识(0=正常,1=删除)';
|
||||
UPDATE antibiotic_approval SET delete_flag = '0' WHERE delete_flag IS NULL;
|
||||
@@ -0,0 +1,5 @@
|
||||
-- 为 clinical_pathway_execution 添加 HisBaseEntity 所需的基础字段
|
||||
ALTER TABLE clinical_pathway_execution ADD COLUMN IF NOT EXISTS create_by VARCHAR(64);
|
||||
ALTER TABLE clinical_pathway_execution ADD COLUMN IF NOT EXISTS create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
|
||||
ALTER TABLE clinical_pathway_execution ADD COLUMN IF NOT EXISTS update_by VARCHAR(64);
|
||||
ALTER TABLE clinical_pathway_execution ADD COLUMN IF NOT EXISTS update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
|
||||
@@ -0,0 +1,4 @@
|
||||
-- 为 prescription_intercept_log 添加 delete_flag 列以匹配 HisBaseEntity 默认映射
|
||||
ALTER TABLE prescription_intercept_log ADD COLUMN IF NOT EXISTS delete_flag CHAR(1) DEFAULT '0';
|
||||
COMMENT ON COLUMN prescription_intercept_log.delete_flag IS '删除标识(0=正常,1=删除)';
|
||||
UPDATE prescription_intercept_log SET delete_flag = '0' WHERE delete_flag IS NULL;
|
||||
@@ -1,16 +1,31 @@
|
||||
package com.healthlink.his.antibiotic.domain;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.core.common.core.domain.HisBaseEntity;
|
||||
import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
@Data @TableName("antibiotic_approval") @Accessors(chain = true) @EqualsAndHashCode(callSuper = false)
|
||||
|
||||
@Data
|
||||
@TableName("antibiotic_approval")
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class AntibioticApproval extends HisBaseEntity {
|
||||
@TableId(type = IdType.ASSIGN_ID) private Long id;
|
||||
private Long encounterId; private Long patientId;
|
||||
private String drugCode; private String drugName; private String antibioticClass;
|
||||
private Long requesterId; private String requesterName;
|
||||
private Long approverId; private String approverName; private Date approvalTime;
|
||||
private String approvalResult; private String reason; private String status; private String delFlag;
|
||||
}
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
private Long encounterId;
|
||||
private Long patientId;
|
||||
private String drugCode;
|
||||
private String drugName;
|
||||
private String antibioticClass;
|
||||
private Long requesterId;
|
||||
private String requesterName;
|
||||
private Long approverId;
|
||||
private String approverName;
|
||||
private Date approvalTime;
|
||||
private String approvalResult;
|
||||
private String reason;
|
||||
private String status;
|
||||
}
|
||||
@@ -25,4 +25,4 @@ public class SysAuditLog extends HisBaseEntity {
|
||||
private String result;
|
||||
private String errorMsg;
|
||||
private Integer durationMs;
|
||||
}
|
||||
}
|
||||
@@ -1317,6 +1317,9 @@ public class YbDao {
|
||||
public List<Settlement3201DetailDto> reconcileGeneralLedgerDetail(Settlement3201WebParam settlement3201WebParam) {
|
||||
// 获取条件
|
||||
String clrType = settlement3201WebParam.getClrType();// 住院 or 门诊
|
||||
if (StringUtils.isEmpty(clrType)) {
|
||||
throw new ServiceException("请选择医疗类型:住院/门诊");
|
||||
}
|
||||
Integer kindEnum;
|
||||
if (clrType.equals(YbClrType.OUTPATIENT_CLINIC.getValue())) {
|
||||
kindEnum = PaymentKind.OUTPATIENT_CLINIC.getValue();
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import request from '@/utils/request'
|
||||
export function createRecord(data) { return request({ url: '/healthlink-his/api/v1/anesthesia/record', method: 'post', data }) }
|
||||
export function updateRecord(data) { return request({ url: '/healthlink-his/api/v1/anesthesia/record', method: 'put', data }) }
|
||||
export function getRecordDetail(id) { return request({ url: '/healthlink-his/api/v1/anesthesia/record/' + id, method: 'get' }) }
|
||||
export function getByEncounter(encounterId) { return request({ url: '/healthlink-his/api/v1/anesthesia/record/encounter/' + encounterId, method: 'get' }) }
|
||||
export function getVitalSigns(recordId) { return request({ url: '/healthlink-his/api/v1/anesthesia/vital-sign/' + recordId, method: 'get' }) }
|
||||
export function getMedications(recordId) { return request({ url: '/healthlink-his/api/v1/anesthesia/medication/' + recordId, method: 'get' }) }
|
||||
export function getIoSummary(recordId) { return request({ url: '/healthlink-his/api/v1/anesthesia/io-summary/' + recordId, method: 'get' }) }
|
||||
export function completeRecord(id) { return request({ url: '/healthlink-his/api/v1/anesthesia/complete/' + id, method: 'put' }) }
|
||||
export function createRecord(data) { return request({ url: '/api/v1/anesthesia/record', method: 'post', data }) }
|
||||
export function updateRecord(data) { return request({ url: '/api/v1/anesthesia/record', method: 'put', data }) }
|
||||
export function getRecordDetail(id) { return request({ url: '/api/v1/anesthesia/record/' + id, method: 'get' }) }
|
||||
export function getByEncounter(encounterId) { return request({ url: '/api/v1/anesthesia/record/encounter/' + encounterId, method: 'get' }) }
|
||||
export function getVitalSigns(recordId) { return request({ url: '/api/v1/anesthesia/vital-sign/' + recordId, method: 'get' }) }
|
||||
export function getMedications(recordId) { return request({ url: '/api/v1/anesthesia/medication/' + recordId, method: 'get' }) }
|
||||
export function getIoSummary(recordId) { return request({ url: '/api/v1/anesthesia/io-summary/' + recordId, method: 'get' }) }
|
||||
export function completeRecord(id) { return request({ url: '/api/v1/anesthesia/complete/' + id, method: 'put' }) }
|
||||
|
||||
@@ -2,23 +2,23 @@ import request from '@/utils/request'
|
||||
|
||||
// ==================== 抗菌药物管控 ====================
|
||||
export function getRules(drugCode) {
|
||||
return request({ url: `/healthlink-his/api/v1/antibiotic/rules/${drugCode}`, method: 'get' })
|
||||
return request({ url: `/api/v1/antibiotic/rules/${drugCode}`, method: 'get' })
|
||||
}
|
||||
|
||||
export function checkRestriction(drugCode, doctorLevel) {
|
||||
return request({ url: '/healthlink-his/api/v1/antibiotic/check-restriction', method: 'get', params: { drugCode, doctorLevel } })
|
||||
return request({ url: '/api/v1/antibiotic/check-restriction', method: 'get', params: { drugCode, doctorLevel } })
|
||||
}
|
||||
|
||||
export function requestApproval(data) {
|
||||
return request({ url: '/healthlink-his/api/v1/antibiotic/approval', method: 'post', data })
|
||||
return request({ url: '/api/v1/antibiotic/approval', method: 'post', data })
|
||||
}
|
||||
|
||||
export function approve(id, approverId, approverName, result) {
|
||||
return request({ url: `/healthlink-his/api/v1/antibiotic/approval/${id}`, method: 'put', params: { approverId, approverName, result } })
|
||||
return request({ url: `/api/v1/antibiotic/approval/${id}`, method: 'put', params: { approverId, approverName, result } })
|
||||
}
|
||||
|
||||
export function getStatistics(startDate, endDate) {
|
||||
return request({ url: '/healthlink-his/api/v1/antibiotic/statistics', method: 'get', params: { startDate, endDate } })
|
||||
return request({ url: '/api/v1/antibiotic/statistics', method: 'get', params: { startDate, endDate } })
|
||||
}
|
||||
|
||||
// 新增抗菌药物规则
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import request from '@/utils/request'
|
||||
export function getRules(drugCode) { return request({ url: '/healthlink-his/api/v1/antibiotic/rules/' + drugCode, method: 'get' }) }
|
||||
export function checkRestriction(drugCode, doctorLevel) { return request({ url: '/healthlink-his/api/v1/antibiotic/check-restriction', method: 'get', params: { drugCode, doctorLevel } }) }
|
||||
export function requestApproval(data) { return request({ url: '/healthlink-his/api/v1/antibiotic/approval', method: 'post', data }) }
|
||||
export function approve(id, params) { return request({ url: '/healthlink-his/api/v1/antibiotic/approval/' + id, method: 'put', params }) }
|
||||
export function getStatistics() { return request({ url: '/healthlink-his/api/v1/antibiotic/statistics', method: 'get' }) }
|
||||
export function getRules(drugCode) { return request({ url: '/api/v1/antibiotic/rules/' + drugCode, method: 'get' }) }
|
||||
export function checkRestriction(drugCode, doctorLevel) { return request({ url: '/api/v1/antibiotic/check-restriction', method: 'get', params: { drugCode, doctorLevel } }) }
|
||||
export function requestApproval(data) { return request({ url: '/api/v1/antibiotic/approval', method: 'post', data }) }
|
||||
export function approve(id, params) { return request({ url: '/api/v1/antibiotic/approval/' + id, method: 'put', params }) }
|
||||
export function getStatistics() { return request({ url: '/api/v1/antibiotic/statistics', method: 'get' }) }
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import request from '@/utils/request'
|
||||
export function verifySignature(documentType, documentId) { return request({ url: '/healthlink-his/api/v1/ca-signature/verify/' + documentType + '/' + documentId, method: 'get' }) }
|
||||
export function getSignatureHistory(documentType, documentId) { return request({ url: '/healthlink-his/api/v1/ca-signature/history/' + documentType + '/' + documentId, method: 'get' }) }
|
||||
export function revokeSignature(id) { return request({ url: '/healthlink-his/api/v1/ca-signature/revoke/' + id, method: 'put' }) }
|
||||
export function getSignatureStatistics() { return request({ url: '/healthlink-his/api/v1/ca-signature/statistics', method: 'get' }) }
|
||||
export function verifySignature(documentType, documentId) { return request({ url: '/api/v1/ca-signature/verify/' + documentType + '/' + documentId, method: 'get' }) }
|
||||
export function getSignatureHistory(documentType, documentId) { return request({ url: '/api/v1/ca-signature/history/' + documentType + '/' + documentId, method: 'get' }) }
|
||||
export function revokeSignature(id) { return request({ url: '/api/v1/ca-signature/revoke/' + id, method: 'put' }) }
|
||||
export function getSignatureStatistics() { return request({ url: '/api/v1/ca-signature/statistics', method: 'get' }) }
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import request from '@/utils/request'
|
||||
export function getPendingList() { return request({ url: '/healthlink-his/api/v1/critical-value/pending', method: 'get' }) }
|
||||
export function confirmValue(id, params) { return request({ url: '/healthlink-his/api/v1/critical-value/confirm/' + id, method: 'put', params }) }
|
||||
export function closeValue(id) { return request({ url: '/healthlink-his/api/v1/critical-value/close/' + id, method: 'put' }) }
|
||||
export function getStatistics() { return request({ url: '/healthlink-his/api/v1/critical-value/statistics', method: 'get' }) }
|
||||
export function getOverdueList() { return request({ url: '/healthlink-his/api/v1/critical-value/overdue', method: 'get' }) }
|
||||
export function getPendingList() { return request({ url: '/api/v1/critical-value/pending', method: 'get' }) }
|
||||
export function confirmValue(id, params) { return request({ url: '/api/v1/critical-value/confirm/' + id, method: 'put', params }) }
|
||||
export function closeValue(id) { return request({ url: '/api/v1/critical-value/close/' + id, method: 'put' }) }
|
||||
export function getStatistics() { return request({ url: '/api/v1/critical-value/statistics', method: 'get' }) }
|
||||
export function getOverdueList() { return request({ url: '/api/v1/critical-value/overdue', method: 'get' }) }
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import request from '@/utils/request'
|
||||
export function createRevision(data) { return request({ url: '/healthlink-his/api/v1/emr/revision', method: 'post', data }) }
|
||||
export function getRevisionHistory(emrId) { return request({ url: '/healthlink-his/api/v1/emr/revision/' + emrId, method: 'get' }) }
|
||||
export function executeCompletenessCheck(emrId) { return request({ url: '/healthlink-his/api/v1/emr/completeness-check/' + emrId, method: 'post' }) }
|
||||
export function getCompletenessCheck(emrId) { return request({ url: '/healthlink-his/api/v1/emr/completeness-check/' + emrId, method: 'get' }) }
|
||||
export function getTimelinessByEncounter(encounterId) { return request({ url: '/healthlink-his/api/v1/emr/timeliness/encounter/' + encounterId, method: 'get' }) }
|
||||
export function getOverdueList() { return request({ url: '/healthlink-his/api/v1/emr/timeliness/overdue', method: 'get' }) }
|
||||
export function getTimelinessStatistics(params) { return request({ url: '/healthlink-his/api/v1/emr/timeliness/statistics', method: 'get', params }) }
|
||||
export function checkTimeliness(data) { return request({ url: '/healthlink-his/api/v1/emr/timeliness/check', method: 'post', data }) }
|
||||
export function createRevision(data) { return request({ url: '/api/v1/emr/revision', method: 'post', data }) }
|
||||
export function getRevisionHistory(emrId) { return request({ url: '/api/v1/emr/revision/' + emrId, method: 'get' }) }
|
||||
export function executeCompletenessCheck(emrId) { return request({ url: '/api/v1/emr/completeness-check/' + emrId, method: 'post' }) }
|
||||
export function getCompletenessCheck(emrId) { return request({ url: '/api/v1/emr/completeness-check/' + emrId, method: 'get' }) }
|
||||
export function getTimelinessByEncounter(encounterId) { return request({ url: '/api/v1/emr/timeliness/encounter/' + encounterId, method: 'get' }) }
|
||||
export function getOverdueList() { return request({ url: '/api/v1/emr/timeliness/overdue', method: 'get' }) }
|
||||
export function getTimelinessStatistics(params) { return request({ url: '/api/v1/emr/timeliness/statistics', method: 'get', params }) }
|
||||
export function checkTimeliness(data) { return request({ url: '/api/v1/emr/timeliness/check', method: 'post', data }) }
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import request from '@/utils/request'
|
||||
export function getCaseList(params) { return request({ url: '/healthlink-his/api/v1/infection/case', method: 'get', params }) }
|
||||
export function getStatistics() { return request({ url: '/healthlink-his/api/v1/infection/statistics', method: 'get' }) }
|
||||
export function getExposureList() { return request({ url: '/healthlink-his/api/v1/infection/exposure', method: 'get' }) }
|
||||
export function getCaseList(params) { return request({ url: '/api/v1/infection/case', method: 'get', params }) }
|
||||
export function getStatistics() { return request({ url: '/api/v1/infection/statistics', method: 'get' }) }
|
||||
export function getExposureList() { return request({ url: '/api/v1/infection/exposure', method: 'get' }) }
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import request from '@/utils/request'
|
||||
export function generateHomepage(data) { return request({ url: '/healthlink-his/api/v1/mr-homepage/generate', method: 'post', data }) }
|
||||
export function updateHomepage(data) { return request({ url: '/healthlink-his/api/v1/mr-homepage', method: 'put', data }) }
|
||||
export function getHomepageDetail(id) { return request({ url: '/healthlink-his/api/v1/mr-homepage/' + id, method: 'get' }) }
|
||||
export function executeQualityCheck(id) { return request({ url: '/healthlink-his/api/v1/mr-homepage/quality-check/' + id, method: 'post' }) }
|
||||
export function getQualityCheck(homepageId) { return request({ url: '/healthlink-his/api/v1/mr-homepage/quality-check/' + homepageId, method: 'get' }) }
|
||||
export function getStatistics(params) { return request({ url: '/healthlink-his/api/v1/mr-homepage/statistics', method: 'get', params }) }
|
||||
export function submitHomepage(id) { return request({ url: '/healthlink-his/api/v1/mr-homepage/submit/' + id, method: 'put' }) }
|
||||
export function generateHomepage(data) { return request({ url: '/api/v1/mr-homepage/generate', method: 'post', data }) }
|
||||
export function updateHomepage(data) { return request({ url: '/api/v1/mr-homepage', method: 'put', data }) }
|
||||
export function getHomepageDetail(id) { return request({ url: '/api/v1/mr-homepage/' + id, method: 'get' }) }
|
||||
export function executeQualityCheck(id) { return request({ url: '/api/v1/mr-homepage/quality-check/' + id, method: 'post' }) }
|
||||
export function getQualityCheck(homepageId) { return request({ url: '/api/v1/mr-homepage/quality-check/' + homepageId, method: 'get' }) }
|
||||
export function getStatistics(params) { return request({ url: '/api/v1/mr-homepage/statistics', method: 'get', params }) }
|
||||
export function submitHomepage(id) { return request({ url: '/api/v1/mr-homepage/submit/' + id, method: 'put' }) }
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import request from '@/utils/request'
|
||||
export function createAssessment(data) { return request({ url: '/healthlink-his/api/v1/nursing/assessment', method: 'post', data }) }
|
||||
export function getAssessmentsByEncounter(encounterId) { return request({ url: '/healthlink-his/api/v1/nursing/assessment/encounter/' + encounterId, method: 'get' }) }
|
||||
export function createCarePlan(data) { return request({ url: '/healthlink-his/api/v1/nursing/care-plan', method: 'post', data }) }
|
||||
export function getCarePlansByEncounter(encounterId) { return request({ url: '/healthlink-his/api/v1/nursing/care-plan/encounter/' + encounterId, method: 'get' }) }
|
||||
export function createHandoff(data) { return request({ url: '/healthlink-his/api/v1/nursing/handoff', method: 'post', data }) }
|
||||
export function getHandoffList(params) { return request({ url: '/healthlink-his/api/v1/nursing/handoff', method: 'get', params }) }
|
||||
export function createAssessment(data) { return request({ url: '/api/v1/nursing/assessment', method: 'post', data }) }
|
||||
export function getAssessmentsByEncounter(encounterId) { return request({ url: '/api/v1/nursing/assessment/encounter/' + encounterId, method: 'get' }) }
|
||||
export function createCarePlan(data) { return request({ url: '/api/v1/nursing/care-plan', method: 'post', data }) }
|
||||
export function getCarePlansByEncounter(encounterId) { return request({ url: '/api/v1/nursing/care-plan/encounter/' + encounterId, method: 'get' }) }
|
||||
export function createHandoff(data) { return request({ url: '/api/v1/nursing/handoff', method: 'post', data }) }
|
||||
export function getHandoffList(params) { return request({ url: '/api/v1/nursing/handoff', method: 'get', params }) }
|
||||
|
||||
@@ -3,7 +3,7 @@ import request from '@/utils/request'
|
||||
// 医嘱执行记录列表
|
||||
export function listOrderExecuteRecord(params) {
|
||||
return request({
|
||||
url: '/healthlink-his/api/v1/order-closed-loop/list',
|
||||
url: '/api/v1/order-closed-loop/list',
|
||||
method: 'get',
|
||||
params: params
|
||||
})
|
||||
@@ -12,7 +12,7 @@ export function listOrderExecuteRecord(params) {
|
||||
// 医嘱闭环状态查询
|
||||
export function getOrderClosedLoopStatus(orderId) {
|
||||
return request({
|
||||
url: '/healthlink-his/api/v1/order-closed-loop/status/' + orderId,
|
||||
url: '/api/v1/order-closed-loop/status/' + orderId,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
@@ -20,7 +20,7 @@ export function getOrderClosedLoopStatus(orderId) {
|
||||
// 执行医嘱步骤
|
||||
export function executeOrderStep(data) {
|
||||
return request({
|
||||
url: '/healthlink-his/api/v1/order-closed-loop/execute',
|
||||
url: '/api/v1/order-closed-loop/execute',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
@@ -29,7 +29,7 @@ export function executeOrderStep(data) {
|
||||
// 闭环统计
|
||||
export function getClosedLoopStatistics(params) {
|
||||
return request({
|
||||
url: '/healthlink-his/api/v1/order-closed-loop/statistics',
|
||||
url: '/api/v1/order-closed-loop/statistics',
|
||||
method: 'get',
|
||||
params: params
|
||||
})
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import request from '@/utils/request'
|
||||
export function createPlan(data) { return request({ url: '/healthlink-his/api/v1/review/plan', method: 'post', data }) }
|
||||
export function getRecords(planId) { return request({ url: '/healthlink-his/api/v1/review/records/' + planId, method: 'get' }) }
|
||||
export function getStatistics() { return request({ url: '/healthlink-his/api/v1/review/statistics', method: 'get' }) }
|
||||
export function createPlan(data) { return request({ url: '/api/v1/review/plan', method: 'post', data }) }
|
||||
export function getRecords(planId) { return request({ url: '/api/v1/review/records/' + planId, method: 'get' }) }
|
||||
export function getStatistics() { return request({ url: '/api/v1/review/statistics', method: 'get' }) }
|
||||
|
||||
@@ -35,7 +35,7 @@ const open = (data) => { formData.value = data || {}; visible.value = true }
|
||||
|
||||
const handleSign = async () => {
|
||||
try {
|
||||
await request({ url: '/healthlink-his/api/v1/ca-signature/sign', method: 'post', data: formData.value })
|
||||
await request({ url: '/api/v1/ca-signature/sign', method: 'post', data: formData.value })
|
||||
ElMessage.success('签名成功')
|
||||
visible.value = false
|
||||
} catch (e) { ElMessage.error('签名失败') }
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function reportCriticalValue(data) { return request({ url: '/healthlink-his/api/v1/critical-value/report', method: 'post', data }) }
|
||||
export function confirmCriticalValue(id, params) { return request({ url: '/healthlink-his/api/v1/critical-value/confirm/' + id, method: 'put', params }) }
|
||||
export function processCriticalValue(id, params) { return request({ url: '/healthlink-his/api/v1/critical-value/process/' + id, method: 'put', params }) }
|
||||
export function closeCriticalValue(id) { return request({ url: '/healthlink-his/api/v1/critical-value/close/' + id, method: 'put' }) }
|
||||
export function getPendingList() { return request({ url: '/healthlink-his/api/v1/critical-value/pending', method: 'get' }) }
|
||||
export function getOverdueList() { return request({ url: '/healthlink-his/api/v1/critical-value/overdue', method: 'get' }) }
|
||||
export function getStatistics(params) { return request({ url: '/healthlink-his/api/v1/critical-value/statistics', method: 'get', params }) }
|
||||
export function reportCriticalValue(data) { return request({ url: '/api/v1/critical-value/report', method: 'post', data }) }
|
||||
export function confirmCriticalValue(id, params) { return request({ url: '/api/v1/critical-value/confirm/' + id, method: 'put', params }) }
|
||||
export function processCriticalValue(id, params) { return request({ url: '/api/v1/critical-value/process/' + id, method: 'put', params }) }
|
||||
export function closeCriticalValue(id) { return request({ url: '/api/v1/critical-value/close/' + id, method: 'put' }) }
|
||||
export function getPendingList() { return request({ url: '/api/v1/critical-value/pending', method: 'get' }) }
|
||||
export function getOverdueList() { return request({ url: '/api/v1/critical-value/overdue', method: 'get' }) }
|
||||
export function getStatistics(params) { return request({ url: '/api/v1/critical-value/statistics', method: 'get', params }) }
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function registerPerson(data) { return request({ url: '/healthlink-his/api/v1/empi/person', method: 'post', data }) }
|
||||
export function mergePersons(primaryId, secondaryIds) { return request({ url: '/healthlink-his/api/v1/empi/merge', method: 'post', params: { primaryId, secondaryIds: secondaryIds.join(',') } }) }
|
||||
export function findByGlobalId(globalId) { return request({ url: '/healthlink-his/api/v1/empi/person/global/' + globalId, method: 'get' }) }
|
||||
export function findByIdCard(idCardNo) { return request({ url: '/healthlink-his/api/v1/empi/person/idcard/' + idCardNo, method: 'get' }) }
|
||||
export function getMappings(globalId) { return request({ url: '/healthlink-his/api/v1/empi/mappings/' + globalId, method: 'get' }) }
|
||||
export function getStatistics() { return request({ url: '/healthlink-his/api/v1/empi/statistics', method: 'get' }) }
|
||||
export function registerPerson(data) { return request({ url: '/api/v1/empi/person', method: 'post', data }) }
|
||||
export function mergePersons(primaryId, secondaryIds) { return request({ url: '/api/v1/empi/merge', method: 'post', params: { primaryId, secondaryIds: secondaryIds.join(',') } }) }
|
||||
export function findByGlobalId(globalId) { return request({ url: '/api/v1/empi/person/global/' + globalId, method: 'get' }) }
|
||||
export function findByIdCard(idCardNo) { return request({ url: '/api/v1/empi/person/idcard/' + idCardNo, method: 'get' }) }
|
||||
export function getMappings(globalId) { return request({ url: '/api/v1/empi/mappings/' + globalId, method: 'get' }) }
|
||||
export function getStatistics() { return request({ url: '/api/v1/empi/statistics', method: 'get' }) }
|
||||
|
||||
export function getPhotos(patientId) { return request({ url: '/empi-enhanced/photo/list', method: 'get', params: { patientId } }) }
|
||||
export function addPhoto(data) { return request({ url: '/empi-enhanced/photo/add', method: 'post', data }) }
|
||||
|
||||
Reference in New Issue
Block a user