configure caregaps operation and properties
This commit is contained in:
@@ -6,6 +6,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import ca.uhn.fhir.cr.config.CrProperties;
|
||||
import org.cqframework.cql.cql2elm.CqlCompilerException;
|
||||
import org.cqframework.cql.cql2elm.CqlTranslator;
|
||||
import org.cqframework.cql.cql2elm.CqlTranslatorOptions;
|
||||
@@ -28,58 +29,36 @@ import ca.uhn.fhir.rest.api.EncodingEnum;
|
||||
@Configuration
|
||||
@EnableConfigurationProperties
|
||||
public class AppProperties {
|
||||
|
||||
//cql settings
|
||||
private CqlEngineOptions cqlEngineOptions = CqlEngineOptions.defaultOptions();
|
||||
private Boolean cql_use_embedded_libraries = true;
|
||||
private Boolean cql_runtime_debug_logging_enabled = false;
|
||||
private Boolean cql_runtime_enable_validation = false;
|
||||
private Boolean cql_runtime_enable_expression_caching = false;
|
||||
private Boolean cql_compiler_validate_units = true;
|
||||
|
||||
private Boolean cql_compiler_verify_only = false;
|
||||
|
||||
private String cql_compiler_compatibility_level = "1.5";
|
||||
|
||||
private CqlCompilerException.ErrorSeverity cql_compiler_error_level = CqlCompilerException.ErrorSeverity.Info;
|
||||
|
||||
private LibraryBuilder.SignatureLevel cql_compiler_signature_level = LibraryBuilder.SignatureLevel.All;
|
||||
|
||||
private Boolean cql_compiler_analyze_data_requirements = false;
|
||||
|
||||
private Boolean cql_compiler_collapse_data_requirements = false;
|
||||
|
||||
private CqlTranslator.Format cql_compiler_translator_format = CqlTranslator.Format.JSON;
|
||||
|
||||
private Boolean cql_compiler_enable_date_range_optimization = false;
|
||||
|
||||
private Boolean cql_compiler_enable_annotations = false;
|
||||
|
||||
private Boolean cql_compiler_enable_locators = false;
|
||||
|
||||
private Boolean cql_compiler_enable_results_type = false;
|
||||
|
||||
private Boolean cql_compiler_enable_detailed_errors = false;
|
||||
|
||||
private Boolean cql_compiler_disable_list_traversal = false;
|
||||
|
||||
private Boolean cql_compiler_disable_list_demotion = false;
|
||||
|
||||
private Boolean cql_compiler_disable_list_promotion = false;
|
||||
|
||||
private Boolean cql_compiler_enable_interval_demotion = false;
|
||||
|
||||
private Boolean cql_compiler_enable_interval_promotion = false;
|
||||
|
||||
private Boolean cql_compiler_disable_method_invocation = false;
|
||||
|
||||
private Boolean cql_compiler_require_from_keyword = false;
|
||||
|
||||
private Boolean cql_compiler_disable_default_model_info_load = false;
|
||||
|
||||
// private CqlEngineOptions cqlEngineOptions =
|
||||
// CqlEngineOptions.defaultOptions();
|
||||
// private CqlTranslatorOptions cqlTranslatorOptions =
|
||||
// CqlTranslatorOptions.defaultOptions();
|
||||
// Care-gaps Settings
|
||||
private String caregaps_reporter = "default";
|
||||
private String caregaps_section_author = "default";
|
||||
private Boolean cr_enabled = false;
|
||||
private Boolean ips_enabled = false;
|
||||
private Boolean openapi_enabled = false;
|
||||
@@ -122,7 +101,6 @@ public class AppProperties {
|
||||
private List<String> supported_resource_types = new ArrayList<>();
|
||||
private List<Bundle.BundleType> allowed_bundle_types = null;
|
||||
private Boolean narrative_enabled = true;
|
||||
|
||||
private Validation validation = new Validation();
|
||||
private Map<String, Tester> tester = new HashMap<>();
|
||||
private Logger logger = new Logger();
|
||||
@@ -132,7 +110,6 @@ public class AppProperties {
|
||||
private Boolean install_transitive_ig_dependencies = true;
|
||||
private Boolean reload_existing_implementationguides = false;
|
||||
private Map<String, ImplementationGuide> implementationGuides = null;
|
||||
|
||||
private String staticLocation = null;
|
||||
|
||||
private Boolean lastn_enabled = false;
|
||||
@@ -460,7 +437,27 @@ public class AppProperties {
|
||||
public void setCr_enabled(Boolean cr_enabled) {
|
||||
this.cr_enabled = cr_enabled;
|
||||
}
|
||||
public String getCareGapsReporter() {
|
||||
return caregaps_reporter;
|
||||
}
|
||||
public String getCareGapsSectionAuthor() {
|
||||
return caregaps_section_author;
|
||||
}
|
||||
|
||||
public void setCareGapsSectionAuthor(String theCareGapsSectionAuthor) {this.caregaps_section_author = theCareGapsSectionAuthor;}
|
||||
public void setCareGapsReporter(String theCareGapsReporter) {
|
||||
this.caregaps_reporter = theCareGapsReporter;
|
||||
}
|
||||
public CrProperties.MeasureProperties getMeasureProperties(){
|
||||
var measureProperties = new CrProperties.MeasureProperties();
|
||||
var measureReportConfiguration = new CrProperties.MeasureProperties.MeasureReportConfiguration();
|
||||
measureReportConfiguration.setCareGapsReporter(this.getCareGapsReporter());
|
||||
measureReportConfiguration.setCareGapsCompositionSectionAuthor(this.getCareGapsSectionAuthor());
|
||||
|
||||
measureProperties.setMeasureReportConfiguration(measureReportConfiguration);
|
||||
|
||||
return measureProperties;
|
||||
}
|
||||
public Boolean getIps_enabled() {
|
||||
return ips_enabled;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package ca.uhn.fhir.jpa.starter.cr;
|
||||
import ca.uhn.fhir.context.FhirContext;
|
||||
import ca.uhn.fhir.context.FhirVersionEnum;
|
||||
import ca.uhn.fhir.cr.config.CrDstu3Config;
|
||||
import ca.uhn.fhir.cr.config.CrProperties;
|
||||
import ca.uhn.fhir.cr.dstu3.IActivityDefinitionProcessorFactory;
|
||||
import ca.uhn.fhir.cr.dstu3.IPlanDefinitionProcessorFactory;
|
||||
import ca.uhn.fhir.cr.dstu3.IQuestionnaireProcessorFactory;
|
||||
@@ -99,6 +100,11 @@ public class StarterCrDstu3Config {
|
||||
return theAppProperties.getCqlOptions();
|
||||
}
|
||||
|
||||
@Primary
|
||||
@Bean
|
||||
public CrProperties.MeasureProperties measureProperties(AppProperties theAppProperties) {
|
||||
return theAppProperties.getMeasureProperties();
|
||||
}
|
||||
@Primary
|
||||
@Bean
|
||||
public CqlTranslatorOptions cqlTranslatorOptions(FhirContext theFhirContext, AppProperties theAppProperties) {
|
||||
|
||||
@@ -4,19 +4,24 @@ import ca.uhn.fhir.IHapiBootOrder;
|
||||
import ca.uhn.fhir.context.FhirContext;
|
||||
import ca.uhn.fhir.context.FhirVersionEnum;
|
||||
|
||||
import ca.uhn.fhir.cr.config.CrProperties;
|
||||
import ca.uhn.fhir.cr.config.CrR4Config;
|
||||
import ca.uhn.fhir.cr.r4.IActivityDefinitionProcessorFactory;
|
||||
import ca.uhn.fhir.cr.r4.IPlanDefinitionProcessorFactory;
|
||||
import ca.uhn.fhir.cr.r4.IQuestionnaireProcessorFactory;
|
||||
import ca.uhn.fhir.cr.r4.IQuestionnaireResponseProcessorFactory;
|
||||
import ca.uhn.fhir.cr.r4.activitydefinition.ActivityDefinitionOperationsProvider;
|
||||
import ca.uhn.fhir.cr.r4.measure.CareGapsOperationProvider;
|
||||
import ca.uhn.fhir.cr.r4.measure.CareGapsService;
|
||||
import ca.uhn.fhir.cr.r4.plandefinition.PlanDefinitionOperationsProvider;
|
||||
import ca.uhn.fhir.cr.r4.questionnaire.QuestionnaireOperationsProvider;
|
||||
import ca.uhn.fhir.cr.r4.questionnaireresponse.QuestionnaireResponseOperationsProvider;
|
||||
import ca.uhn.fhir.jpa.starter.AppProperties;
|
||||
import ca.uhn.fhir.jpa.starter.annotations.OnR4Condition;
|
||||
import ca.uhn.fhir.rest.api.server.RequestDetails;
|
||||
import ca.uhn.fhir.rest.server.RestfulServer;
|
||||
import ca.uhn.fhir.rest.server.provider.ResourceProviderFactory;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.cqframework.cql.cql2elm.CqlTranslatorOptions;
|
||||
import org.opencds.cqf.cql.evaluator.CqlOptions;
|
||||
import org.opencds.cqf.cql.evaluator.activitydefinition.r4.ActivityDefinitionProcessor;
|
||||
@@ -28,6 +33,8 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.context.annotation.*;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
@Configuration
|
||||
@Conditional({ OnR4Condition.class, CrConfigCondition.class })
|
||||
@Import({ CrR4Config.class })
|
||||
@@ -102,6 +109,29 @@ public class StarterCrR4Config {
|
||||
return theAppProperties.getCqlOptions();
|
||||
}
|
||||
|
||||
@Primary
|
||||
@Bean
|
||||
public CrProperties.MeasureProperties measureProperties(AppProperties theAppProperties) {
|
||||
return theAppProperties.getMeasureProperties();
|
||||
}
|
||||
|
||||
@Primary
|
||||
@Bean
|
||||
CareGapsOperationProvider careGapsOperationProvider(Function<RequestDetails, CareGapsService> r4CareGapsServiceFactory, AppProperties theAppProperties) {
|
||||
if(StringUtils.isBlank(theAppProperties.getCareGapsReporter()) || StringUtils.isBlank(theAppProperties.getCareGapsSectionAuthor())){
|
||||
throw new RuntimeException("Configuration failed to register reporter or author properties for running care gaps functionality");
|
||||
}
|
||||
Function<RequestDetails, CareGapsService> careGapsServiceFunction = r4CareGapsServiceFactory.andThen(careGapsService -> {
|
||||
var measureReportConfiguration = new CrProperties.MeasureProperties.MeasureReportConfiguration();
|
||||
measureReportConfiguration.setCareGapsReporter(theAppProperties.getCareGapsReporter());
|
||||
measureReportConfiguration.setCareGapsCompositionSectionAuthor(theAppProperties.getCareGapsSectionAuthor());
|
||||
careGapsService.getCrProperties().getMeasureProperties().setMeasureReportConfiguration(measureReportConfiguration);
|
||||
return careGapsService;
|
||||
});
|
||||
CareGapsOperationProvider careGapsOperationProvider = new CareGapsOperationProvider(careGapsServiceFunction);
|
||||
return careGapsOperationProvider;
|
||||
}
|
||||
|
||||
@Primary
|
||||
@Bean
|
||||
public CqlTranslatorOptions cqlTranslatorOptions(FhirContext theFhirContext, AppProperties theAppProperties) {
|
||||
|
||||
@@ -10,21 +10,20 @@ import ca.uhn.fhir.rest.client.api.ServerValidationModeEnum;
|
||||
import org.eclipse.jetty.websocket.api.Session;
|
||||
import org.eclipse.jetty.websocket.client.ClientUpgradeRequest;
|
||||
import org.eclipse.jetty.websocket.client.WebSocketClient;
|
||||
import org.hl7.fhir.r4.model.MeasureReport;
|
||||
import org.hl7.fhir.r4.model.Parameters;
|
||||
import org.hl7.fhir.r4.model.StringType;
|
||||
import org.hl7.fhir.instance.model.api.IBaseResource;
|
||||
import org.hl7.fhir.r4.model.*;
|
||||
import org.hl7.fhir.instance.model.api.IIdType;
|
||||
import org.hl7.fhir.r4.model.Bundle;
|
||||
import org.hl7.fhir.r4.model.Observation;
|
||||
import org.hl7.fhir.r4.model.Patient;
|
||||
import org.hl7.fhir.r4.model.Subscription;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Order;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.boot.web.server.LocalServerPort;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
@@ -39,15 +38,21 @@ import static org.awaitility.Awaitility.await;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = {Application.class, JpaStarterWebsocketDispatcherConfig.class}, properties = {
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
|
||||
classes = {Application.class, JpaStarterWebsocketDispatcherConfig.class},
|
||||
properties = {
|
||||
"spring.datasource.url=jdbc:h2:mem:dbr4",
|
||||
"hapi.fhir.enable_repository_validating_interceptor=true",
|
||||
"hapi.fhir.fhir_version=r4",
|
||||
"hapi.fhir.subscription.websocket_enabled=true",
|
||||
"hapi.fhir.mdm_enabled=true",
|
||||
"hapi.fhir.cr_enabled=true",
|
||||
"hapi.fhir.caregaps_section_author=Organization/alphora-author",
|
||||
"hapi.fhir.caregaps_reporter=Organization/alphora",
|
||||
"hapi.fhir.implementationguides.dk-core.name=hl7.fhir.dk.core",
|
||||
"hapi.fhir.implementationguides.dk-core.version=1.1.0",
|
||||
"hapi.fhir.auto_create_placeholder_reference_targets=true",
|
||||
// Override is currently required when using MDM as the construction of the MDM
|
||||
// beans are ambiguous as they are constructed multiple places. This is evident
|
||||
// when running in a spring boot environment
|
||||
@@ -58,6 +63,8 @@ class ExampleServerR4IT implements IServerSupport{
|
||||
private FhirContext ourCtx;
|
||||
private ApplicationContext ctx;
|
||||
|
||||
@Autowired private AppProperties appProperties;
|
||||
|
||||
@LocalServerPort
|
||||
private int port;
|
||||
|
||||
@@ -133,6 +140,16 @@ class ExampleServerR4IT implements IServerSupport{
|
||||
org.hl7.fhir.r4.model.Bundle result = theClient.transaction().withBundle(bundle).execute();
|
||||
return result;
|
||||
}
|
||||
|
||||
private IBaseResource loadRec(String theLocation, FhirContext theCtx, IGenericClient theClient) throws IOException {
|
||||
String json = stringFromResource(theLocation);
|
||||
List<IBaseResource> resList = new ArrayList<>();
|
||||
IBaseResource resource = (IBaseResource) theCtx.newJsonParser().parseResource(json);
|
||||
resList.add(resource);
|
||||
var result = theClient.transaction().withResources(resList).execute();
|
||||
//.withResources(resource).execute();
|
||||
return result.get(0);
|
||||
}
|
||||
@Test
|
||||
public void testBatchPutWithIdenticalTags() {
|
||||
String batchPuts = "{\n" +
|
||||
@@ -241,6 +258,42 @@ class ExampleServerR4IT implements IServerSupport{
|
||||
ourClient.delete().resourceById(mySubscriptionId).execute();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCareGaps() throws IOException {
|
||||
|
||||
var reporter = appProperties.getCareGapsReporter();
|
||||
var author = appProperties.getCareGapsSectionAuthor();
|
||||
|
||||
assertTrue(reporter.equals("Organization/alphora"));
|
||||
assertTrue(author.equals("Organization/alphora-author"));
|
||||
|
||||
String periodStartValid = "2019-01-01";
|
||||
String periodEndValid = "2019-12-31";
|
||||
String subjectPatientValid = "Patient/numer-EXM125";
|
||||
String statusValid = "open-gap";
|
||||
String measureIdValid = "BreastCancerScreeningFHIR";
|
||||
|
||||
loadBundle("r4/CareGaps/authreporter-bundle.json", ourCtx, ourClient);
|
||||
loadBundle("r4/CareGaps/BreastCancerScreeningFHIR-bundle.json", ourCtx, ourClient);
|
||||
|
||||
Parameters params = new Parameters();
|
||||
params.addParameter().setName("periodStart").setValue(new DateType(periodStartValid));
|
||||
params.addParameter().setName("subject").setValue(new DateType(periodEndValid));
|
||||
params.addParameter().setName("status").setValue(new StringType(subjectPatientValid));
|
||||
params.addParameter().setName("measureId").setValue(new StringType(statusValid));
|
||||
params.addParameter().setName("").setValue(new StringType(measureIdValid));
|
||||
|
||||
|
||||
assertDoesNotThrow(() -> {
|
||||
ourClient.operation()
|
||||
.onType(Measure.class)
|
||||
.named("$care-gaps")
|
||||
.withParameters(params)
|
||||
.returnResourceType(Parameters.class)
|
||||
.execute();
|
||||
});
|
||||
}
|
||||
|
||||
private int activeSubscriptionCount() {
|
||||
return ourClient.search().forResource(Subscription.class).where(Subscription.STATUS.exactly().code("active"))
|
||||
.cacheControl(new CacheControlDirective().setNoCache(true)).returnBundle(Bundle.class).execute().getEntry()
|
||||
|
||||
153753
src/test/resources/r4/CareGaps/BreastCancerScreeningFHIR-bundle.json
Normal file
153753
src/test/resources/r4/CareGaps/BreastCancerScreeningFHIR-bundle.json
Normal file
File diff suppressed because one or more lines are too long
204
src/test/resources/r4/CareGaps/authreporter-bundle.json
Normal file
204
src/test/resources/r4/CareGaps/authreporter-bundle.json
Normal file
@@ -0,0 +1,204 @@
|
||||
{
|
||||
"resourceType": "Bundle",
|
||||
"id": "AlphoraOrgAuth-bundle",
|
||||
"type": "transaction",
|
||||
"entry": [
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "Organization",
|
||||
"id": "alphora",
|
||||
"meta": {
|
||||
"profile": [
|
||||
"http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/organization-deqm"
|
||||
]
|
||||
},
|
||||
"identifier": [
|
||||
{
|
||||
"use": "official",
|
||||
"type": {
|
||||
"coding": [
|
||||
{
|
||||
"system": "http://terminology.hl7.org/CodeSystem/v2-0203",
|
||||
"code": "TAX",
|
||||
"display": "Tax ID number"
|
||||
}
|
||||
]
|
||||
},
|
||||
"system": "urn:oid:2.16.840.1.113883.4.4",
|
||||
"value": "123456789",
|
||||
"assigner": {
|
||||
"display": "www.irs.gov"
|
||||
}
|
||||
}
|
||||
],
|
||||
"active": true,
|
||||
"type": [
|
||||
{
|
||||
"coding": [
|
||||
{
|
||||
"system": "http://terminology.hl7.org/CodeSystem/organization-type",
|
||||
"code": "prov",
|
||||
"display": "Healthcare Provider"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"name": "alphora",
|
||||
"telecom": [
|
||||
{
|
||||
"system": "phone",
|
||||
"value": "(+1) 401-555-1212"
|
||||
}
|
||||
],
|
||||
"address": [
|
||||
{
|
||||
"line": [
|
||||
"73 Lakewood Street"
|
||||
],
|
||||
"city": "Warwick",
|
||||
"state": "RI",
|
||||
"postalCode": "02886",
|
||||
"country": "USA"
|
||||
}
|
||||
]
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "Organization/alphora"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "Organization",
|
||||
"id": "alphora-author",
|
||||
"meta": {
|
||||
"profile": [
|
||||
"http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/organization-deqm"
|
||||
]
|
||||
},
|
||||
"identifier": [
|
||||
{
|
||||
"use": "official",
|
||||
"type": {
|
||||
"coding": [
|
||||
{
|
||||
"system": "http://terminology.hl7.org/CodeSystem/v2-0203",
|
||||
"code": "TAX",
|
||||
"display": "Tax ID number"
|
||||
}
|
||||
]
|
||||
},
|
||||
"system": "urn:oid:2.16.840.1.113883.4.4",
|
||||
"value": "12345678910",
|
||||
"assigner": {
|
||||
"display": "www.irs.gov"
|
||||
}
|
||||
}
|
||||
],
|
||||
"active": true,
|
||||
"type": [
|
||||
{
|
||||
"coding": [
|
||||
{
|
||||
"system": "http://terminology.hl7.org/CodeSystem/organization-type",
|
||||
"code": "prov",
|
||||
"display": "Healthcare Provider"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"name": "alphora-author",
|
||||
"telecom": [
|
||||
{
|
||||
"system": "phone",
|
||||
"value": "(+1) 401-555-1313"
|
||||
}
|
||||
],
|
||||
"address": [
|
||||
{
|
||||
"line": [
|
||||
"737 Lakewood Street"
|
||||
],
|
||||
"city": "Warwick",
|
||||
"state": "RI",
|
||||
"postalCode": "02886",
|
||||
"country": "USA"
|
||||
}
|
||||
]
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "Organization/alphora-author"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "Patient",
|
||||
"id": "numer-EXM125",
|
||||
"meta": {
|
||||
"profile": [
|
||||
"http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
|
||||
]
|
||||
},
|
||||
"extension": [
|
||||
{
|
||||
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race",
|
||||
"extension": [
|
||||
{
|
||||
"url": "ombCategory",
|
||||
"valueCoding": {
|
||||
"system": "urn:oid:2.16.840.1.113883.6.238",
|
||||
"code": "2028-9",
|
||||
"display": "Asian"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity",
|
||||
"extension": [
|
||||
{
|
||||
"url": "ombCategory",
|
||||
"valueCoding": {
|
||||
"system": "urn:oid:2.16.840.1.113883.6.238",
|
||||
"code": "2135-2",
|
||||
"display": "Hispanic or Latino"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"identifier": [
|
||||
{
|
||||
"use": "usual",
|
||||
"type": {
|
||||
"coding": [
|
||||
{
|
||||
"system": "http://terminology.hl7.org/CodeSystem/v2-0203",
|
||||
"code": "MR",
|
||||
"display": "Medical Record Number"
|
||||
}
|
||||
]
|
||||
},
|
||||
"system": "http://hospital.smarthealthit.org",
|
||||
"value": "999999995"
|
||||
}
|
||||
],
|
||||
"name": [
|
||||
{
|
||||
"family": "McCarren",
|
||||
"given": [
|
||||
"Karen"
|
||||
]
|
||||
}
|
||||
],
|
||||
"gender": "female",
|
||||
"birthDate": "1965-01-01"
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "Patient/numer-EXM125"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
63
src/test/resources/r4/CareGaps/numer-EXM125-patient.json
Normal file
63
src/test/resources/r4/CareGaps/numer-EXM125-patient.json
Normal file
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"resourceType": "Patient",
|
||||
"id": "numer-EXM125",
|
||||
"meta": {
|
||||
"profile": [
|
||||
"http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
|
||||
]
|
||||
},
|
||||
"extension": [
|
||||
{
|
||||
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race",
|
||||
"extension": [
|
||||
{
|
||||
"url": "ombCategory",
|
||||
"valueCoding": {
|
||||
"system": "urn:oid:2.16.840.1.113883.6.238",
|
||||
"code": "2028-9",
|
||||
"display": "Asian"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity",
|
||||
"extension": [
|
||||
{
|
||||
"url": "ombCategory",
|
||||
"valueCoding": {
|
||||
"system": "urn:oid:2.16.840.1.113883.6.238",
|
||||
"code": "2135-2",
|
||||
"display": "Hispanic or Latino"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"identifier": [
|
||||
{
|
||||
"use": "usual",
|
||||
"type": {
|
||||
"coding": [
|
||||
{
|
||||
"system": "http://terminology.hl7.org/CodeSystem/v2-0203",
|
||||
"code": "MR",
|
||||
"display": "Medical Record Number"
|
||||
}
|
||||
]
|
||||
},
|
||||
"system": "http://hospital.smarthealthit.org",
|
||||
"value": "999999995"
|
||||
}
|
||||
],
|
||||
"name": [
|
||||
{
|
||||
"family": "McCarren",
|
||||
"given": [
|
||||
"Karen"
|
||||
]
|
||||
}
|
||||
],
|
||||
"gender": "female",
|
||||
"birthDate": "1965-01-01"
|
||||
}
|
||||
Reference in New Issue
Block a user