首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

FHIR添加自定义.create

FHIR(Fast Healthcare Interoperability Resources)是一个标准,用于电子健康记录(EHR)系统之间的数据交换。FHIR标准由HL7组织维护,提供了一组资源和API,用于处理医疗数据。

在实现FHIR服务器时,可能需要添加自定义的.create方法,以便处理特定的业务逻辑或数据存储需求。以下是如何在FHIR服务器中添加自定义的.create方法的示例。

使用HAPI FHIR

HAPI FHIR是一个流行的Java实现,用于构建FHIR服务器和客户端。以下是如何在HAPI FHIR中添加自定义的.create方法。

1. 创建自定义资源提供者

首先,创建一个自定义资源提供者类,继承自JpaResourceProvider或实现IResourceProvider接口。

代码语言:javascript
复制
import ca.uhn.fhir.jpa.api.dao.IFhirResourceDao;
import ca.uhn.fhir.jpa.rp.r4.PatientResourceProvider;
import ca.uhn.fhir.rest.annotation.Create;
import ca.uhn.fhir.rest.api.MethodOutcome;
import ca.uhn.fhir.rest.api.server.RequestDetails;
import ca.uhn.fhir.rest.server.exceptions.UnprocessableEntityException;
import org.hl7.fhir.r4.model.IdType;
import org.hl7.fhir.r4.model.Patient;
import org.hl7.fhir.r4.model.ResourceType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class CustomPatientResourceProvider extends PatientResourceProvider {

    @Autowired
    private IFhirResourceDao<Patient> myPatientDao;

    @Create
    public MethodOutcome createPatient(RequestDetails theRequestDetails, Patient thePatient) {
        // 自定义业务逻辑
        if (thePatient.getName().isEmpty()) {
            throw new UnprocessableEntityException("Patient must have a name");
        }

        // 调用默认的创建方法
        MethodOutcome outcome = myPatientDao.create(thePatient, theRequestDetails);

        // 自定义处理
        // ...

        return outcome;
    }

    @Override
    public Class<Patient> getResourceType() {
        return Patient.class;
    }
}

2. 配置FHIR服务器

在FHIR服务器的配置类中,注册自定义的资源提供者。

代码语言:javascript
复制
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.jpa.api.config.DaoConfig;
import ca.uhn.fhir.jpa.api.config.JpaStorageSettings;
import ca.uhn.fhir.jpa.provider.r4.JpaSystemProviderR4;
import ca.uhn.fhir.rest.server.RestfulServer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;

@Configuration
public class FhirServerConfig {

    @Autowired
    private CustomPatientResourceProvider customPatientResourceProvider;

    @Bean
    public RestfulServer restfulServer() {
        RestfulServer server = new RestfulServer(FhirContext.forR4());

        // 注册自定义资源提供者
        server.registerProvider(customPatientResourceProvider);

        return server;
    }
}

3. 启动FHIR服务器

确保你的Spring Boot应用程序正确配置并启动。自定义的.create方法现在应该可以处理Patient资源的创建请求。

使用其他FHIR实现

如果你使用的是其他FHIR实现(如Microsoft的FHIR Server for Azure),你可能需要参考相应的文档,了解如何扩展和自定义API。

总结

通过继承和扩展HAPI FHIR的资源提供者类,你可以轻松地添加自定义的.create方法,以处理特定的业务逻辑和数据存储需求。确保在自定义方法中调用默认的创建方法,以便利用HAPI FHIR的内置功能和验证机制。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 19.9 添加自定义模板

    添加自定义模板 可以自定义一个常用模板,方便给新增主机添加监控项目 自定义aming模板 把其他自带模板里面的某些监控项目(比如cpu、内存等)复制到aming模板里 定义触发器 添加图形 自动发现,找到...Linux,点击右侧的自动发现,参考Mounted filesystem discovery和Network interface discovery定义规则 可以直接导出、导入模板,然后再删除不需要的对象 添加自定义模板...模板的名字自定义,这里叫做hanfeng,模板归属在模板的组里,或者链接到其他的模板 ?...刚添加的hanfeng模板,它下面 没有 应用集、监控项、触发器、自动发现规则、web场景,所有都为空的 现在给hanfeng增加一些监控项目,在自带的模板里面找一些,比如在Template OS Linux...然后在选择 添加,否则是无法保存的 ? 然后点击 更新 ? 在更新之后,会看到hanfeng模板里面有了应用集、监控项、图形、自动发现等 ?

    80670

    19.12 添加自定义监控项目

    添加自定义监控项目 需求:监控某台web的80端口连接数,并出图 两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现 对于第一步,需要到客户端定义脚本 vim /usr/local...local/sbin/estab.sh 客户端上编辑配置文件 vim /etc/zabbix/zabbix_agentd.conf//增加 UnsafeUserParameters=1 //表示使用自定义脚本...UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh //自定义监控项的key为my.estab.count,后面的[*]里面写脚本的参数...,到“监测中” “最新数据”查看刚添加的项目是否有数据出现 有了数据就可以添加图形了 “配置”“主机” “图形” “创建图形” 添加自定义监控项目 zabbix的监控项目是在模板里面体现,但是有时候就会有些个性化的需求...在添加该项目后,还需要添加图形,配置——>主机——>图形——>创建图形 ? 名称为创建并发链接数——>然后添加监控项 并发链接数——>点击添加 ? ?

    58580

    Casbin如何添加自定义函数

    1如何使用自定义函数 官方:https://casbin.org/docs/zh-CN/function 2需求 使用自定义函数支持多个超级管理员。...p.sub && r.obj == p.obj && r.act == p.act || r.sub == "root" r.sub == “root” // 请求中用户为root是超级管理员 4自定义函数分几步...准备好你的自定义函数 在Casbin的执行者(enforcer)中注册这个函数 在您的模型CONF中使用自定义函数 注意:使用自定义函数参数个数需要和准备好的一致哦 5(1)你的自定义函数 public...superAdminMap,true)) { return true; } return false; }; 使用 use 向匿名函数传递参数 6(2)注册这个函数 // 自定义函数...if(in_array($key1, $superAdminMap, true)) { return true; } return false; }); 7(3)使用自定义函数

    88910
    领券