diff --git a/README.md b/README.md index bb914f5..4ef899c 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Eos * Postgres if not using docker * optionally: openEHR platform, otherwise there is the option to setup one down below -### Setting up an OMOP Db and connect it to an openEHR platform +### Setting up Eos 1. clone repo `git clone --recursive` 2. Use Common Data model sqls from `setup/ddls/` or download @@ -83,11 +83,7 @@ $ mvn clean install url: jdbc:postgresql://localhost:5433/YOUR_SCHEMA #default is public ``` -3. configure openEHR platform in `src/main/resources/application.yml`.
- If you do not have setup an openEHR platform you can use [ehrbase](https://github.com/ehrbase/ehrbase). - ( - See [here](https://ehrbase.readthedocs.io/en/latest/03_development/04_docker_images/01_ehrbase/02_use_image/index.html#run-ehrbase-db-with-docker-compose) - for a guide how to set it up with docker-compose.) +3. configure openEHR platform in `src/main/resources/application.yml`. ```yml ehrbase: @@ -101,6 +97,9 @@ $ mvn clean install 4. configure cronjob for eras or leave them for manual execution + +5. **POSTMAN** examples can be found in `.config/` + ## Mappings We currently support CDM v5.4, if more tooling is provided v6 will be added in the future. diff --git a/setup/ddls/create_sequences_and_ehr_to_person.sql b/setup/ddls/create_sequences_and_ehr_to_person.sql index 0bd53d5..954e8ac 100644 --- a/setup/ddls/create_sequences_and_ehr_to_person.sql +++ b/setup/ddls/create_sequences_and_ehr_to_person.sql @@ -31,3 +31,4 @@ CREATE TABLE IF NOT EXISTS @cdmDatabaseSchema.ehr_to_person ALTER TABLE IF EXISTS @cdmDatabaseSchema.ehr_to_person OWNER to postgres; + diff --git a/src/main/java/org/bih/eos/controller/EhrController.java b/src/main/java/org/bih/eos/controller/EhrController.java index 410e233..d372732 100644 --- a/src/main/java/org/bih/eos/controller/EhrController.java +++ b/src/main/java/org/bih/eos/controller/EhrController.java @@ -37,7 +37,7 @@ public ResponseEntity convertAll(@RequestBody String json) { ObjectMapper objectMapper = new ObjectMapper(); try { Ehrs ehrs = objectMapper.readValue(json, Ehrs.class); - return new ResponseEntity<>(new EhrService(ehrToPersonService, openEhrClient, converterService).convertEhrList(ehrs), HttpStatus.OK); + return new ResponseEntity<>(new EhrService(ehrToPersonService, openEhrClient, converterService).convertSpecific(ehrs), HttpStatus.OK); } catch (JsonProcessingException e) { return new ResponseEntity<>("{ \"message\" : \"Json malformed\" }", HttpStatus.BAD_REQUEST); } diff --git a/src/main/java/org/bih/eos/converter/cdm_field/CDMConverter.java b/src/main/java/org/bih/eos/converter/cdm_field/CDMConverter.java index f970f90..ce4e49e 100644 --- a/src/main/java/org/bih/eos/converter/cdm_field/CDMConverter.java +++ b/src/main/java/org/bih/eos/converter/cdm_field/CDMConverter.java @@ -29,8 +29,11 @@ private Optional runConversion(Locatable contentItem, ValueEntry[] valueEntri for (ValueEntry valueEntry : valueEntries) { if (valueEntry.getCode() != null) { return convertCode(valueEntry.getCode()); - } else if (valueEntry.getPath() != null && PathProcessor.getItemAtPath(contentItem, valueEntry.getPath()).isPresent() && convertPath(contentItem, valueEntry.getPath()).isPresent() ) { - return convertPath(contentItem, valueEntry.getPath()); + } else if (valueEntry.getPath() != null && PathProcessor.getItemAtPath(contentItem, valueEntry.getPath()).isPresent()) { + Optional convertedPath = convertPath(contentItem, valueEntry.getPath()); + if(convertedPath.isPresent()){ + return convertedPath; + } } } return Optional.empty(); diff --git a/src/main/java/org/bih/eos/converter/cdt/conversion_entities/Entity.java b/src/main/java/org/bih/eos/converter/cdt/conversion_entities/Entity.java index a600139..b40eee9 100644 --- a/src/main/java/org/bih/eos/converter/cdt/conversion_entities/Entity.java +++ b/src/main/java/org/bih/eos/converter/cdt/conversion_entities/Entity.java @@ -1,9 +1,16 @@ package org.bih.eos.converter.cdt.conversion_entities; -import org.bih.eos.jpabase.entity.JPABaseEntity; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import org.bih.eos.jpabase.entity.*; +import org.checkerframework.checker.nullness.Opt; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.core.convert.ConversionException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.Optional; import java.util.OptionalDouble; import java.util.function.Consumer; @@ -23,22 +30,54 @@ public Entity(B jpaEntity) { public Optional toJpaEntity() { requiredOptionalFieldNull = !validateRequiredOptionalsNotNull(); if (requiredFieldEmpty || requiredOptionalFieldNull) { - generateLog(); + // generateLog(); + // return extractVisitOccurrence(jpaEntity); return Optional.empty(); } else { return Optional.of(jpaEntity); } } - private void generateLog() { //TODO add property for display -/* ObjectMapper mapper = new ObjectMapper(); + private Optional extractVisitOccurrence(B jpaEntity){ + try { + Method visitOccurrence = getVisitOccurrenceMethod(jpaEntity); + return Optional.of((JPABaseEntity)visitOccurrence.invoke(jpaEntity)); + } catch (NoSuchMethodException e) { + return Optional.empty(); + } catch (InvocationTargetException | IllegalAccessException e) { + throw new RuntimeException("Reflection on getVisitOccurrence failed, check your code!"); + } + } + + private static Method getVisitOccurrenceMethod(Object evaluationObject) throws NoSuchMethodException { + if (evaluationObject.getClass() == Measurement.class) { + return Measurement.class.getDeclaredMethod("getVisitOccurrence"); + } else if (evaluationObject.getClass() == ProcedureOccurrence.class) { + return ProcedureOccurrence.class.getDeclaredMethod("getVisitOccurrence"); + } else if (evaluationObject.getClass() == DrugExposure.class) { + return DrugExposure.class.getDeclaredMethod("getVisitOccurrence"); + } else if (evaluationObject.getClass() == Observation.class) { + return Observation.class.getDeclaredMethod("getVisitOccurrence"); + } else if (evaluationObject.getClass() == ConditionOccurrence.class) { + return ConditionOccurrence.class.getDeclaredMethod("getVisitOccurrence"); + } else if (evaluationObject.getClass() == DeviceExposure.class) { + return DeviceExposure.class.getDeclaredMethod("getVisitOccurrence"); + }else if (evaluationObject.getClass() == Person.class) { + return Person.class.getDeclaredMethod("getVisitOccurrence"); + } else { + throw new NoSuchMethodException(); + } + } + + /* private void generateLog() { //TODO add property for display + ObjectMapper mapper = new ObjectMapper(); mapper.enable(SerializationFeature.INDENT_OUTPUT); try { LOG.warn("ignore conversion since field is missing. " + mapper.writeValueAsString(jpaEntity)); } catch (JsonProcessingException e) { //ignore - }*/ - } + } + }*/ public void populateFieldIfPresent(Optional optionalValue, Consumer setterConsumer) { requiredFieldEmpty = CDMFieldSetter.setFieldIfPresent(optionalValue, requiredFieldEmpty, setterConsumer); diff --git a/src/main/java/org/bih/eos/converter/cdt/converter/custom/CustomCDTConverter.java b/src/main/java/org/bih/eos/converter/cdt/converter/custom/CustomCDTConverter.java index 65e8bae..1bf1db3 100644 --- a/src/main/java/org/bih/eos/converter/cdt/converter/custom/CustomCDTConverter.java +++ b/src/main/java/org/bih/eos/converter/cdt/converter/custom/CustomCDTConverter.java @@ -24,7 +24,7 @@ protected List persist(List convertedEntities) { } protected JPABaseEntity persist(JPABaseEntity convertedEntity) { - return defaultConverterServices.getPersistenceService().create(convertedEntity); + return defaultConverterServices.getPersistenceService().createInstant(convertedEntity); } } diff --git a/src/main/java/org/bih/eos/converter/composition/CompositionToMDConverter.java b/src/main/java/org/bih/eos/converter/composition/CompositionToMDConverter.java index b9de6a9..f8b4df1 100644 --- a/src/main/java/org/bih/eos/converter/composition/CompositionToMDConverter.java +++ b/src/main/java/org/bih/eos/converter/composition/CompositionToMDConverter.java @@ -21,6 +21,7 @@ import java.util.*; public class CompositionToMDConverter extends CompositionToEntityConverter { + HashMap archetypeList = new HashMap(); private static final Logger LOG = LoggerFactory.getLogger(CompositionToMDConverter.class); @@ -43,6 +44,7 @@ private List runCDTConverters(List conversionTra Optional visitOccurrence = convertVisitOccurrence(convertableComposition.getComposition(), convertableComposition.getPerson()); CdtExecutionParameterMedData cdtExecutionParameters = new CdtExecutionParameterMedData(convertableComposition.getPerson(), visitOccurrence); cdtConverterResults = iterateContent(convertableComposition.getComposition().getContent(), cdtExecutionParameters, conversionTracker, cdtConverterResults); + LOG.info("Mapped amount of archetypes: " + archetypeList.values().stream().mapToInt(i -> i.intValue()).sum() + ", including following archetypes: " + archetypeList); return cdtConverterResults; } @@ -52,6 +54,7 @@ private List iterateContent(List contentItems, CdtEx cdtExecutionParameters.setContentItem(contentItem); if (contentItem.getClass().equals(Section.class)) { cdtConverterResults.addAll(iterateContent(((Section) contentItem).getItems(), cdtExecutionParameters, conversionTracker, cdtConverterResults)); + return cdtConverterResults; } if (converterExists(cdtExecutionParameters.getArchetypeId())) { @@ -64,6 +67,14 @@ private List iterateContent(List contentItems, CdtEx return cdtConverterResults; } + private void increaseArchetypeCounter(String archetypeNodeId) { + if (archetypeList.containsKey(archetypeNodeId)) { + archetypeList.put(archetypeNodeId, archetypeList.get(archetypeNodeId) + 1); + } else { + archetypeList.put(archetypeNodeId, 0); + } + } + private Optional convertVisitOccurrence(Composition composition, Person person) { VisitOccurrenceConverter visitOccurrenceConverter = new VisitOccurrenceConverter(defaultConverterServices); Optional visitOccurrence = visitOccurrenceConverter.convert(composition, person); @@ -72,6 +83,7 @@ private Optional convertVisitOccurrence(Composition composition private List executeCDTConverter(CdtExecutionParameterMedData cdtExecutionParameters, List conversionTracker) { List cdtConverterResults = new ArrayList<>(); + increaseArchetypeCounter(cdtExecutionParameters.archetypeId); for (CDTConverter converter : conversionMap.get(cdtExecutionParameters.archetypeId)) { if (converter instanceof CDTMedicalDataConverter) { List currentConversionResult = diff --git a/src/main/java/org/bih/eos/jpabase/entity/ConditionOccurrence.java b/src/main/java/org/bih/eos/jpabase/entity/ConditionOccurrence.java index f2cf099..50ee430 100644 --- a/src/main/java/org/bih/eos/jpabase/entity/ConditionOccurrence.java +++ b/src/main/java/org/bih/eos/jpabase/entity/ConditionOccurrence.java @@ -34,19 +34,7 @@ import java.util.Date; -import jakarta.persistence.Access; -import jakarta.persistence.AccessType; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.SequenceGenerator; -import jakarta.persistence.Table; -import jakarta.persistence.Temporal; -import jakarta.persistence.TemporalType; +import jakarta.persistence.*; @Entity @Table(name="condition_occurrence") @@ -94,7 +82,7 @@ public class ConditionOccurrence extends JPABaseEntity { @JoinColumn(name = "provider_id") private Provider provider; - @ManyToOne + @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "visit_occurrence_id") private VisitOccurrence visitOccurrence; diff --git a/src/main/java/org/bih/eos/jpabase/entity/DeviceExposure.java b/src/main/java/org/bih/eos/jpabase/entity/DeviceExposure.java index ebd2868..da62c6d 100644 --- a/src/main/java/org/bih/eos/jpabase/entity/DeviceExposure.java +++ b/src/main/java/org/bih/eos/jpabase/entity/DeviceExposure.java @@ -34,19 +34,7 @@ import java.util.Date; -import jakarta.persistence.Access; -import jakarta.persistence.AccessType; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.SequenceGenerator; -import jakarta.persistence.Table; -import jakarta.persistence.Temporal; -import jakarta.persistence.TemporalType; +import jakarta.persistence.*; @Entity @Table(name="device_exposure") @@ -95,8 +83,8 @@ public class DeviceExposure extends JPABaseEntity { @ManyToOne @JoinColumn(name="provider_id") private Provider provider; - - @ManyToOne + + @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name="visit_occurrence_id") private VisitOccurrence visitOccurrence; diff --git a/src/main/java/org/bih/eos/jpabase/entity/DrugExposure.java b/src/main/java/org/bih/eos/jpabase/entity/DrugExposure.java index 8b96ffc..d3fd66e 100644 --- a/src/main/java/org/bih/eos/jpabase/entity/DrugExposure.java +++ b/src/main/java/org/bih/eos/jpabase/entity/DrugExposure.java @@ -34,20 +34,7 @@ import java.util.Date; -import jakarta.persistence.Access; -import jakarta.persistence.AccessType; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.FetchType; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.SequenceGenerator; -import jakarta.persistence.Table; -import jakarta.persistence.Temporal; -import jakarta.persistence.TemporalType; +import jakarta.persistence.*; @Entity @Table(name="drug_exposure") @@ -117,7 +104,7 @@ public class DrugExposure extends JPABaseEntity { @JoinColumn(name = "provider_id") private Provider provider; - @ManyToOne(fetch = FetchType.LAZY) + @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "visit_occurrence_id") private VisitOccurrence visitOccurrence; diff --git a/src/main/java/org/bih/eos/jpabase/entity/Measurement.java b/src/main/java/org/bih/eos/jpabase/entity/Measurement.java index 1948be5..5e83e76 100644 --- a/src/main/java/org/bih/eos/jpabase/entity/Measurement.java +++ b/src/main/java/org/bih/eos/jpabase/entity/Measurement.java @@ -34,20 +34,7 @@ import java.util.Date; -import jakarta.persistence.Access; -import jakarta.persistence.AccessType; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.Index; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.SequenceGenerator; -import jakarta.persistence.Table; -import jakarta.persistence.Temporal; -import jakarta.persistence.TemporalType; +import jakarta.persistence.*; @Entity @Table( @@ -120,7 +107,7 @@ public class Measurement extends JPABaseEntity { @JoinColumn(name="provider_id") private Provider provider; - @ManyToOne + @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "visit_occurrence_id") private VisitOccurrence visitOccurrence; diff --git a/src/main/java/org/bih/eos/jpabase/entity/Note.java b/src/main/java/org/bih/eos/jpabase/entity/Note.java index e5b84a2..540e606 100644 --- a/src/main/java/org/bih/eos/jpabase/entity/Note.java +++ b/src/main/java/org/bih/eos/jpabase/entity/Note.java @@ -34,19 +34,7 @@ import java.util.Date; -import jakarta.persistence.Access; -import jakarta.persistence.AccessType; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.SequenceGenerator; -import jakarta.persistence.Table; -import jakarta.persistence.Temporal; -import jakarta.persistence.TemporalType; +import jakarta.persistence.*; @Entity @Table(name="note") @@ -101,7 +89,7 @@ public class Note extends JPABaseEntity { @JoinColumn(name = "provider_id") private Provider provider; - @ManyToOne + @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "visit_occurrence_id") private VisitOccurrence visitOccurrence; diff --git a/src/main/java/org/bih/eos/jpabase/entity/Observation.java b/src/main/java/org/bih/eos/jpabase/entity/Observation.java index ae582d0..ddfe30f 100644 --- a/src/main/java/org/bih/eos/jpabase/entity/Observation.java +++ b/src/main/java/org/bih/eos/jpabase/entity/Observation.java @@ -34,20 +34,7 @@ import java.util.Date; -import jakarta.persistence.Access; -import jakarta.persistence.AccessType; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.Index; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.SequenceGenerator; -import jakarta.persistence.Table; -import jakarta.persistence.Temporal; -import jakarta.persistence.TemporalType; +import jakarta.persistence.*; @Entity @Table( @@ -107,7 +94,7 @@ public class Observation extends JPABaseEntity { @JoinColumn(name = "provider_id") private Provider provider; - @ManyToOne + @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "visit_occurrence_id") private VisitOccurrence visitOccurrence; diff --git a/src/main/java/org/bih/eos/jpabase/entity/ProcedureOccurrence.java b/src/main/java/org/bih/eos/jpabase/entity/ProcedureOccurrence.java index 4e353aa..51840c1 100644 --- a/src/main/java/org/bih/eos/jpabase/entity/ProcedureOccurrence.java +++ b/src/main/java/org/bih/eos/jpabase/entity/ProcedureOccurrence.java @@ -34,20 +34,7 @@ import java.util.Date; -import jakarta.persistence.Access; -import jakarta.persistence.AccessType; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.Index; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.SequenceGenerator; -import jakarta.persistence.Table; -import jakarta.persistence.Temporal; -import jakarta.persistence.TemporalType; +import jakarta.persistence.*; @Entity @Table( @@ -106,7 +93,7 @@ public class ProcedureOccurrence extends JPABaseEntity { @JoinColumn(name = "provider_id") private Provider provider; - @ManyToOne + @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "visit_occurrence_id") private VisitOccurrence visitOccurrence; diff --git a/src/main/java/org/bih/eos/services/ConceptSearchService.java b/src/main/java/org/bih/eos/services/ConceptSearchService.java index be08d8a..2f164bd 100644 --- a/src/main/java/org/bih/eos/services/ConceptSearchService.java +++ b/src/main/java/org/bih/eos/services/ConceptSearchService.java @@ -20,10 +20,12 @@ public class ConceptSearchService{ private final ConceptRelationshipService conceptRelationshipService; private final ConceptService conceptService; private static final Logger LOG = LoggerFactory.getLogger(ConceptSearchService.class); + private final Concept empty_concept; public ConceptSearchService(ConceptService conceptService, ConceptRelationshipService conceptRelationshipService) { this.conceptRelationshipService = conceptRelationshipService; this.conceptService = conceptService; + this.empty_concept = conceptService.findById(0L); } @@ -61,7 +63,7 @@ private Optional searchMappedStandardConcept(Concept concept) { LOG.info("Queried relationship concepts output: " + conceptRelationshipIds); if (conceptRelationshipIds.size() == 0) { LOG.info("No standard concept mapping was found a 0 concept id is returned as specified by OHDSI"); - return Optional.of(conceptService.findById(0l)); + return Optional.of(empty_concept); } return Optional.of(conceptService.findById(conceptRelationshipIds.get(0).getId().getConceptId2())); } @@ -70,7 +72,7 @@ public Optional searchSourceConcept(ParameterWrapper param) { List concepts = conceptService.searchWithParams(0, 0, List.of(param), null); if (concepts.size() == 0) { LOG.info("No matching concept was found, "); - return Optional.of(conceptService.findById(0L)); //TODO if not matching pattern was found stop mapping or return 0 ? + return Optional.of(empty_concept); //TODO if not matching pattern was found stop mapping or return 0 ? } LOG.info("Queried source concepts output: " + concepts); return Optional.of(concepts.get(0)); diff --git a/src/main/java/org/bih/eos/services/ConverterService.java b/src/main/java/org/bih/eos/services/ConverterService.java index e1aac9a..7289f74 100644 --- a/src/main/java/org/bih/eos/services/ConverterService.java +++ b/src/main/java/org/bih/eos/services/ConverterService.java @@ -28,6 +28,19 @@ public List convert(ConvertableComposition convertableComposition return persistenceService.getPersistedEntities(); } + public List convertBatch(ConvertableComposition convertableComposition) { + persistenceService.clearPersistedEntities(); + TypeDescriptor sourceType = TypeDescriptor.valueOf(ConvertableComposition.class); + TypeDescriptor targetType = TypeDescriptor.collection(List.class, TypeDescriptor.valueOf(JPABaseEntity.class)); + persistenceService.createBatch((List) conversionService.convert(convertableComposition, sourceType, targetType)); + return persistenceService.getPersistedEntities(); + } + + public List convertLastBatch() { + persistenceService.clearPersistedEntities(); + persistenceService.createLastBatch(); + return persistenceService.getPersistedEntities(); + } public List convert(Composition composition) { persistenceService.clearPersistedEntities(); TypeDescriptor sourceType = TypeDescriptor.valueOf(Composition.class); diff --git a/src/main/java/org/bih/eos/services/EhrService.java b/src/main/java/org/bih/eos/services/EhrService.java index d5204d5..bf2a3c5 100644 --- a/src/main/java/org/bih/eos/services/EhrService.java +++ b/src/main/java/org/bih/eos/services/EhrService.java @@ -9,21 +9,24 @@ import org.bih.eos.services.dao.ConversionResponse; import org.ehrbase.client.aql.query.NativeQuery; import org.ehrbase.client.aql.query.Query; -import org.ehrbase.client.aql.record.Record1; +import org.ehrbase.client.aql.record.Record2; import org.ehrbase.client.openehrclient.OpenEhrClient; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Optional; @Service public class EhrService { - + private final long offsetLimit = 10000; + private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(EhrService.class); private final EHRToPersonService ehrToPersonService; private final OpenEhrClient openEhrClient; private final ConverterService converterService; - private ConversionResponse output; + int ehrBatchAmount = 40; public EhrService(EHRToPersonService ehrToPersonService, OpenEhrClient openEhrClient, ConverterService converterService) { this.ehrToPersonService = ehrToPersonService; @@ -32,57 +35,96 @@ public EhrService(EHRToPersonService ehrToPersonService, OpenEhrClient openEhrCl } public String convertAll() { - output = new ConversionResponse(); List ehrToPersonList = ehrToPersonService.findAll(); - for (EHRToPerson ehrToPerson : ehrToPersonList) { - convertEhrContent(ehrToPerson); - } - return output.getJson(); + return convertList(ehrToPersonList); } - public String convertEhrList(Ehrs ehrList) { - output = new ConversionResponse(); + public String convertSpecific(Ehrs ehrList) { + List ehrToPersonList = new ArrayList<>(); for (String ehrId : ehrList.getEhrIds()) { Optional ehrToPersonOptional = ehrToPersonService.findByEhrId(ehrId); - ehrToPersonOptional.ifPresent(this::convertEhrContent); + ehrToPersonOptional.ifPresent(ehrToPersonList::add); + } + return convertList(ehrToPersonList); + } + + public String convertList(List ehrToPersonList) { + ConversionResponse output = new ConversionResponse(); + List ehrToPersonBatch = new ArrayList<>(); + for (EHRToPerson ehrToPerson : ehrToPersonList) { + ehrToPersonBatch.add(ehrToPerson); + if (ehrToPersonBatch.size() == ehrBatchAmount) { + loadCompositions(ehrToPersonBatch, output); + ehrToPersonBatch = new ArrayList<>(); + } + } + if (ehrToPersonBatch.size() != 0) { + loadCompositions(ehrToPersonBatch, output); } + converterService.convertLastBatch(); return output.getJson(); } - private void convertEhrContent(EHRToPerson ehrToPerson) { - loadCompositions(ehrToPerson); + public void loadCompositions(List ehrToPersonList, ConversionResponse output) { + List> queryResult = executeAqlQuery(0, ehrToPersonList); + HashMap> sortedEhrCompositions = prepareQueryOutput(queryResult); + for (EHRToPerson ehrToPerson : ehrToPersonList) { + if (sortedEhrCompositions.containsKey(ehrToPerson.getEhrId())) { + convert(sortedEhrCompositions.get(ehrToPerson.getEhrId()), ehrToPerson, output); + batchLoad(queryResult, ehrToPersonList, output,0); + } + } } - public void loadCompositions(EHRToPerson ehrToPerson) { - List> result = executeAqlQuery(0, ehrToPerson.getEhrId()); - convert(result, ehrToPerson); - batchLoad(result, ehrToPerson, 0); + private HashMap> prepareQueryOutput(List> result) { + HashMap> sortedEhrCompositions = new HashMap<>(); + for (Record2 queryResult : result) { + if (!sortedEhrCompositions.containsKey(queryResult.value1())) { + List compositions = new ArrayList<>(); + compositions.add(queryResult.value2()); + sortedEhrCompositions.put(queryResult.value1(), compositions); + } else { + sortedEhrCompositions.get(queryResult.value1()).add(queryResult.value2()); + } + } + return sortedEhrCompositions; } - private void batchLoad(List> result, EHRToPerson ehrToPerson, int offset) { - if (result.size() == 50) { - offset += 50; - List> resultNew = executeAqlQuery(offset, ehrToPerson.getEhrId()); - convert(resultNew, ehrToPerson); - batchLoad(resultNew, ehrToPerson, offset); + private void batchLoad(List> queryResultOld, List ehrToPersonList, ConversionResponse output, long offset) { + if (queryResultOld.size() == offsetLimit) { + offset += offsetLimit; + List> queryResultNew = executeAqlQuery(offset, ehrToPersonList); + HashMap> sortedEhrCompositions = prepareQueryOutput(queryResultNew); + for (EHRToPerson ehrToPerson : ehrToPersonList) { + if (sortedEhrCompositions.containsKey(ehrToPerson.getEhrId())) { + convert(sortedEhrCompositions.get(ehrToPerson.getEhrId()), ehrToPerson, output); + batchLoad(queryResultNew, ehrToPersonList, output, offset); + } + } } } - private void convert(List> resultNew, EHRToPerson ehrToPerson) { - for (Record1 compositionRecord1 : resultNew) { - if (compositionRecord1.value1() != null) { - List converterResult = converterService.convert(new ConvertableComposition(compositionRecord1.value1(), ehrToPerson.getPerson())); + public void convert(List compositionList, EHRToPerson ehrToPerson, ConversionResponse output) { + for (Composition composition : compositionList) { + if (composition != null) { + List converterResult = converterService.convertBatch(new ConvertableComposition(composition, ehrToPerson.getPerson())); output.increaseOneComposition(ehrToPerson.getEhrId(), converterResult.size()); } } + LOG.info("Current status of the mappings: " + output.getJson()); } - private NativeQuery> buildCompositionQuery(int offset, String ehrId) { - return Query.buildNativeQuery("SELECT c from EHR e CONTAINS Composition c WHERE e/ehr_id/value = '" + ehrId + "' LIMIT 50 OFFSET " + offset + " ORDER BY e/ehr_id/value DESC", Composition.class); + private NativeQuery> buildCompositionQueryEhr(long offset, List ehrToPersonList) { + StringBuilder whereStatements = new StringBuilder(); + for (EHRToPerson ehrToPerson : ehrToPersonList) { + whereStatements.append(" e/ehr_id/value = '").append(ehrToPerson.getEhrId()).append("' OR"); + } + whereStatements = new StringBuilder(whereStatements.substring(0, whereStatements.length() - 2)); + return Query.buildNativeQuery("SELECT e/ehr_id/value, c from EHR e CONTAINS Composition c WHERE " + whereStatements + " LIMIT " + offsetLimit + " OFFSET " + offset + " ORDER BY e/ehr_id/value DESC", String.class, Composition.class); } - private List> executeAqlQuery(int offset, String ehrId) { - Query> query = buildCompositionQuery(0, ehrId); + private List> executeAqlQuery(long offset, List ehrIds) { + NativeQuery> query = buildCompositionQueryEhr(offset, ehrIds); try { return openEhrClient.aqlEndpoint().execute(query); } catch (NullPointerException nullPointerException) { @@ -90,3 +132,8 @@ private List> executeAqlQuery(int offset, String ehrId) { } } } + +//['ca1e0191-bcba-4570-affb-b6f176a870d4', '77f6774b-c8aa-4826-8415-afcb25bc4001'] +//---------Creating Compositions------------- +//Loading Composition files ... +//Compositions uploaded: 1 \ No newline at end of file diff --git a/src/main/java/org/bih/eos/services/PersistenceService.java b/src/main/java/org/bih/eos/services/PersistenceService.java index bc2dd6f..3b4c775 100644 --- a/src/main/java/org/bih/eos/services/PersistenceService.java +++ b/src/main/java/org/bih/eos/services/PersistenceService.java @@ -1,12 +1,17 @@ package org.bih.eos.services; +import jakarta.persistence.EntityExistsException; import org.bih.eos.jpabase.entity.JPABaseEntity; +import org.bih.eos.jpabase.entity.Measurement; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; + import java.util.ArrayList; +import java.util.HashMap; import java.util.List; @Service @@ -14,22 +19,90 @@ public class PersistenceService { @PersistenceContext EntityManager entityManager; + + private Boolean isBatchProcessing = false; + private List transformedEntities = new ArrayList<>(); + HashMap baseEntityMap = new HashMap(); private List persistedEntities = new ArrayList<>(); + private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(PersistenceService.class); + + @Transactional + public void createBatch(List convertedEntities) { + isBatchProcessing = true; + transformedEntities.addAll(convertedEntities); + if (transformedEntities.size() >= 1000) { + LOG.info("Batch load 1000: " + transformedEntities.size()); + persistJpaEntities(); + LOG.info("Mapped amount of database Entities: " + baseEntityMap.values().stream().mapToInt(i -> i.intValue()).sum() + ", including following entities: " + baseEntityMap); + entityManager.flush(); + entityManager.clear(); + transformedEntities = new ArrayList<>(); + } + } + + @Transactional + public void createLastBatch() { + if (transformedEntities.size() != 0) { + persistJpaEntities(); + LOG.info("Mapped amount of database Entities: " + baseEntityMap.values().stream().mapToInt(i -> i.intValue()).sum() + ", including following entities: " + baseEntityMap); + entityManager.flush(); + entityManager.clear(); + transformedEntities = new ArrayList<>(); + } + baseEntityMap = new HashMap<>(); + isBatchProcessing = false; + } + + + private void persistJpaEntities() { + for (JPABaseEntity jpaBaseEntity : transformedEntities) { + entityManager.persist(jpaBaseEntity); + increaseBaseEntityCounter(jpaBaseEntity.getClass().toString()); + persistedEntities.add(jpaBaseEntity); + } + } + @Transactional public List create(List convertedEntities) { List outputs = new ArrayList<>(); for (JPABaseEntity baseEntity : convertedEntities) { entityManager.persist(baseEntity); + increaseBaseEntityCounter(baseEntity.getClass().toString()); persistedEntities.add(baseEntity); outputs.add(baseEntity); } return outputs; } + //['df8033b1-1dde-433c-ab0e-1f6fed8924ff'] + private void increaseBaseEntityCounter(String baseEntityName) { + baseEntityName = baseEntityName.replace("class org.bih.eos.jpabase.entity.", ""); + if (baseEntityMap.containsKey(baseEntityName)) { + baseEntityMap.put(baseEntityName, baseEntityMap.get(baseEntityName) + 1); + } else { + baseEntityMap.put(baseEntityName, 1); + } + } + @Transactional public JPABaseEntity create(JPABaseEntity convertedEntity) { + //Check if Batch + if (isBatchProcessing) { + transformedEntities.add(convertedEntity); + persistedEntities.add(convertedEntity); + } else { + entityManager.persist(convertedEntity); + increaseBaseEntityCounter(convertedEntity.getClass().toString()); + persistedEntities.add(convertedEntity); + } + return convertedEntity; + } + + @Transactional + public JPABaseEntity createInstant(JPABaseEntity convertedEntity) { entityManager.persist(convertedEntity); + increaseBaseEntityCounter(convertedEntity.getClass().toString()); persistedEntities.add(convertedEntity); return convertedEntity; } diff --git a/src/main/java/org/bih/eos/services/dao/ConversionResponse.java b/src/main/java/org/bih/eos/services/dao/ConversionResponse.java index abd32de..28720a0 100644 --- a/src/main/java/org/bih/eos/services/dao/ConversionResponse.java +++ b/src/main/java/org/bih/eos/services/dao/ConversionResponse.java @@ -5,26 +5,31 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.bih.eos.exceptions.UnprocessableEntityException; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; public class ConversionResponse { - HashMap ehrResponses = new HashMap<>(); + List ehrIds = new ArrayList<>(); + + EhrResponse ehrResponse = new EhrResponse(); static class EhrResponse { + + @JsonProperty("amount of ehrs mapped") + long ehrCount; @JsonProperty("amount of clinical data table rows added") long convertedOmopEntities; @JsonProperty("amount of compositions mapped") long convertedCompositions; - public EhrResponse(long convertedOmopEntities, long convertedCompositions) { - this.convertedOmopEntities = convertedOmopEntities; - this.convertedCompositions = convertedCompositions; - } - public void increaseConvertedOmopEntities(long value) { convertedOmopEntities += value; } + public void setEhrCount(long value) { + ehrCount = value; + } public void increaseConvertedCompositions(long value) { convertedCompositions += value; } @@ -39,21 +44,23 @@ public long getConvertedCompositions() { } public String getJson() { + ehrResponse.setEhrCount(ehrIds.size()); ObjectMapper mapper = new ObjectMapper(); try { - return mapper.writeValueAsString(ehrResponses); + return mapper.writeValueAsString(ehrResponse); } catch (JsonProcessingException e) { throw new UnprocessableEntityException("Error converting to json"); } } public void increaseOneComposition(String ehrId, int size) { - if(ehrResponses.containsKey(ehrId)){ - EhrResponse ehrResponse = ehrResponses.get(ehrId); + if (ehrIds.contains(ehrId)) { ehrResponse.increaseConvertedOmopEntities(size); ehrResponse.increaseConvertedCompositions(1); }else{ - ehrResponses.put(ehrId, new EhrResponse(1, size)); + ehrIds.add(ehrId); + ehrResponse.increaseConvertedOmopEntities(size); + ehrResponse.increaseConvertedCompositions(1); } } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index badd249..669b35c 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -28,6 +28,9 @@ spring: hibernate: default_schema: *schema hibernate.ddl-auto: update + order_inserts: true + jdbc: + batch_size: 1000 datasource: password: postgres @@ -38,6 +41,8 @@ logging: file: name: ./logs/omopbridge.log level: + org.hibernate.engine.jdbc.batch.internal.BatchingBatch: DEBUG + root: info org: springframework: boot: error @@ -53,3 +58,5 @@ logging: max-file-size: 100MB + + diff --git a/src/test/java/json/output/medical_data/action/medication_v1/vaccine_covid.json b/src/test/java/json/output/medical_data/action/medication_v1/vaccine_covid.json index b9882bd..af110c4 100644 --- a/src/test/java/json/output/medical_data/action/medication_v1/vaccine_covid.json +++ b/src/test/java/json/output/medical_data/action/medication_v1/vaccine_covid.json @@ -1,84 +1,16 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-12-26T23:00:00.000+00:00", - "visitStartDateTime": "2020-12-26T23:00:00.000+00:00", - "visitEndDate": "2020-12-26T23:00:00.000+00:00", - "visitEndDateTime": "2020-12-26T23:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", "drugConcept": { "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", + "conceptName": "SARS-CoV-2 (COVID-19) vaccine, mRNA spike protein", + "domainId": "Drug", + "vocabularyId": "RxNorm", + "conceptClassId": "Ingredient", + "standardConcept": "S", + "conceptCode": "2468231", + "validStartDate": "2021-01-03T23:00:00.000+00:00", "validEndDate": "2099-12-30T23:00:00.000+00:00", "invalidReason": null, "idAsLong": "##ignore" @@ -181,13 +113,13 @@ "drugSourceValue": "1119349007", "drugSourceConcept": { "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", + "conceptName": "SARS-CoV-2 mRNA vaccine", + "domainId": "Drug", + "vocabularyId": "SNOMED", + "conceptClassId": "Pharma/Biol Product", "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", + "conceptCode": "1119349007", + "validStartDate": "2021-01-30T23:00:00.000+00:00", "validEndDate": "2099-12-30T23:00:00.000+00:00", "invalidReason": null, "idAsLong": "##ignore" diff --git a/src/test/java/json/output/medical_data/action/medication_v1/vaccine_covid_3_times.json b/src/test/java/json/output/medical_data/action/medication_v1/vaccine_covid_3_times.json index e10d089..9378a89 100644 --- a/src/test/java/json/output/medical_data/action/medication_v1/vaccine_covid_3_times.json +++ b/src/test/java/json/output/medical_data/action/medication_v1/vaccine_covid_3_times.json @@ -1,84 +1,16 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-12-26T23:00:00.000+00:00", - "visitStartDateTime": "2020-12-26T23:00:00.000+00:00", - "visitEndDate": "2020-12-26T23:00:00.000+00:00", - "visitEndDateTime": "2020-12-26T23:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", "drugConcept": { "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", + "conceptName": "SARS-CoV-2 (COVID-19) vaccine, mRNA spike protein", + "domainId": "Drug", + "vocabularyId": "RxNorm", + "conceptClassId": "Ingredient", + "standardConcept": "S", + "conceptCode": "2468231", + "validStartDate": "2021-01-03T23:00:00.000+00:00", "validEndDate": "2099-12-30T23:00:00.000+00:00", "invalidReason": null, "idAsLong": "##ignore" @@ -181,13 +113,13 @@ "drugSourceValue": "1119349007", "drugSourceConcept": { "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", + "conceptName": "SARS-CoV-2 mRNA vaccine", + "domainId": "Drug", + "vocabularyId": "SNOMED", + "conceptClassId": "Pharma/Biol Product", "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", + "conceptCode": "1119349007", + "validStartDate": "2021-01-30T23:00:00.000+00:00", "validEndDate": "2099-12-30T23:00:00.000+00:00", "invalidReason": null, "idAsLong": "##ignore" diff --git a/src/test/java/json/output/medical_data/action/medication_v1/vaccine_hep_a.json b/src/test/java/json/output/medical_data/action/medication_v1/vaccine_hep_a.json index f9fbac7..c70d353 100644 --- a/src/test/java/json/output/medical_data/action/medication_v1/vaccine_hep_a.json +++ b/src/test/java/json/output/medical_data/action/medication_v1/vaccine_hep_a.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-10-05T22:00:00.000+00:00", - "visitStartDateTime": "2020-10-05T22:00:00.000+00:00", - "visitEndDate": "2020-10-05T22:00:00.000+00:00", - "visitEndDateTime": "2020-10-05T22:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/action/medication_v1/vaccine_streptococcus.json b/src/test/java/json/output/medical_data/action/medication_v1/vaccine_streptococcus.json index 716432f..3c47820 100644 --- a/src/test/java/json/output/medical_data/action/medication_v1/vaccine_streptococcus.json +++ b/src/test/java/json/output/medical_data/action/medication_v1/vaccine_streptococcus.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-10-05T22:00:00.000+00:00", - "visitStartDateTime": "2020-10-05T22:00:00.000+00:00", - "visitEndDate": "2020-10-05T22:00:00.000+00:00", - "visitEndDateTime": "2020-10-05T22:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/action/procedure_v1/apheresis.json b/src/test/java/json/output/medical_data/action/procedure_v1/apheresis.json index e9f475c..cb2e93e 100644 --- a/src/test/java/json/output/medical_data/action/procedure_v1/apheresis.json +++ b/src/test/java/json/output/medical_data/action/procedure_v1/apheresis.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-09-29T22:00:00.000+00:00", - "visitStartDateTime": "2020-09-29T22:00:00.000+00:00", - "visitEndDate": "2020-09-29T22:00:00.000+00:00", - "visitEndDateTime": "2020-09-29T22:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/evaluation/death_summary_v0/death.json b/src/test/java/json/output/medical_data/evaluation/death_summary_v0/death.json index 11e5c81..2f5998c 100644 --- a/src/test/java/json/output/medical_data/evaluation/death_summary_v0/death.json +++ b/src/test/java/json/output/medical_data/evaluation/death_summary_v0/death.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2022-09-27T11:37:26.757+00:00", - "visitStartDateTime": "2022-09-27T11:37:26.757+00:00", - "visitEndDate": "2022-09-27T11:37:26.757+00:00", - "visitEndDateTime": "2022-09-27T11:37:26.757+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/evaluation/device_summary_v0/medical_device.json b/src/test/java/json/output/medical_data/evaluation/device_summary_v0/medical_device.json index 0ee8ae6..53ddc92 100644 --- a/src/test/java/json/output/medical_data/evaluation/device_summary_v0/medical_device.json +++ b/src/test/java/json/output/medical_data/evaluation/device_summary_v0/medical_device.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2022-09-29T15:54:08.131+00:00", - "visitStartDateTime": "2022-09-29T15:54:08.131+00:00", - "visitEndDate": "2022-09-29T15:54:08.131+00:00", - "visitEndDateTime": "2022-09-29T15:54:08.131+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/cardiovascular_disease.json b/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/cardiovascular_disease.json index ed9015a..13dbe1e 100644 --- a/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/cardiovascular_disease.json +++ b/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/cardiovascular_disease.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-10-05T22:00:00.000+00:00", - "visitStartDateTime": "2020-10-05T22:00:00.000+00:00", - "visitEndDate": "2020-10-05T22:00:00.000+00:00", - "visitEndDateTime": "2020-10-05T22:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/chronic_kidney_disease.json b/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/chronic_kidney_disease.json index 0fb64d6..8fa05fc 100644 --- a/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/chronic_kidney_disease.json +++ b/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/chronic_kidney_disease.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-10-28T16:01:09.000+00:00", - "visitStartDateTime": "2020-10-28T16:01:09.000+00:00", - "visitEndDate": "2020-10-28T16:01:09.000+00:00", - "visitEndDateTime": "2020-10-28T16:01:09.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/chronic_liver_disease.json b/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/chronic_liver_disease.json index 9e8ce65..f629e1b 100644 --- a/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/chronic_liver_disease.json +++ b/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/chronic_liver_disease.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-10-05T22:00:00.000+00:00", - "visitStartDateTime": "2020-10-05T22:00:00.000+00:00", - "visitEndDate": "2020-10-05T22:00:00.000+00:00", - "visitEndDateTime": "2020-10-05T22:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/chronic_lung_disease.json b/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/chronic_lung_disease.json index cd36b3b..5b5d1bd 100644 --- a/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/chronic_lung_disease.json +++ b/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/chronic_lung_disease.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-10-05T22:00:00.000+00:00", - "visitStartDateTime": "2020-10-05T22:00:00.000+00:00", - "visitEndDate": "2020-10-05T22:00:00.000+00:00", - "visitEndDateTime": "2020-10-05T22:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/chronic_neurological_mental_disease.json b/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/chronic_neurological_mental_disease.json index 51cae48..20d1a2d 100644 --- a/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/chronic_neurological_mental_disease.json +++ b/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/chronic_neurological_mental_disease.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-10-05T22:00:00.000+00:00", - "visitStartDateTime": "2020-10-05T22:00:00.000+00:00", - "visitEndDate": "2020-10-05T22:00:00.000+00:00", - "visitEndDateTime": "2020-10-05T22:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/complications_covid.json b/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/complications_covid.json index 85866af..b3fc74b 100644 --- a/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/complications_covid.json +++ b/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/complications_covid.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-10-15T14:07:48.000+00:00", - "visitStartDateTime": "2020-10-15T14:07:48.000+00:00", - "visitEndDate": "2020-10-15T14:07:48.000+00:00", - "visitEndDateTime": "2020-10-15T14:07:48.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/diabetes_mellitus.json b/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/diabetes_mellitus.json index 287e1b2..b10478c 100644 --- a/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/diabetes_mellitus.json +++ b/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/diabetes_mellitus.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-10-05T22:00:00.000+00:00", - "visitStartDateTime": "2020-10-05T22:00:00.000+00:00", - "visitEndDate": "2020-10-05T22:00:00.000+00:00", - "visitEndDateTime": "2020-10-05T22:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/organ_recipient.json b/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/organ_recipient.json index 03e6655..58846f6 100644 --- a/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/organ_recipient.json +++ b/src/test/java/json/output/medical_data/evaluation/problem_diagnosis_v1/organ_recipient.json @@ -1,84 +1,16 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-10-04T22:00:00.000+00:00", - "visitStartDateTime": "2020-10-04T22:00:00.000+00:00", - "visitEndDate": "2020-10-04T22:00:00.000+00:00", - "visitEndDateTime": "2020-10-04T22:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", "conditionConcept": { "id": "##ignore", - "conceptName": "H/O: tissue/organ recipient", + "conceptName": "History of event", "domainId": "Observation", - "vocabularyId": "SNOMED", + "vocabularyId": "OMOP Extension", "conceptClassId": "Context-dependent", "standardConcept": "S", - "conceptCode": "161663000", - "validStartDate": "2002-01-30T23:00:00.000+00:00", + "conceptCode": "OMOP5165859", + "validStartDate": "2022-05-05T22:00:00.000+00:00", "validEndDate": "2099-12-30T23:00:00.000+00:00", "invalidReason": null, "idAsLong": "##ignore" @@ -178,7 +110,7 @@ "domainId": "Observation", "vocabularyId": "SNOMED", "conceptClassId": "Context-dependent", - "standardConcept": "S", + "standardConcept": null, "conceptCode": "161663000", "validStartDate": "2002-01-30T23:00:00.000+00:00", "validEndDate": "2099-12-30T23:00:00.000+00:00", diff --git a/src/test/java/json/output/medical_data/evaluation/tobacco_smoking_summary_v1/current.json b/src/test/java/json/output/medical_data/evaluation/tobacco_smoking_summary_v1/current.json index 866a01e..6953dfd 100644 --- a/src/test/java/json/output/medical_data/evaluation/tobacco_smoking_summary_v1/current.json +++ b/src/test/java/json/output/medical_data/evaluation/tobacco_smoking_summary_v1/current.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-09-20T22:00:00.000+00:00", - "visitStartDateTime": "2020-09-20T22:00:00.000+00:00", - "visitEndDate": "2020-09-20T22:00:00.000+00:00", - "visitEndDateTime": "2020-09-20T22:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/evaluation/tobacco_smoking_summary_v1/never.json b/src/test/java/json/output/medical_data/evaluation/tobacco_smoking_summary_v1/never.json index 4092085..2ccbf6f 100644 --- a/src/test/java/json/output/medical_data/evaluation/tobacco_smoking_summary_v1/never.json +++ b/src/test/java/json/output/medical_data/evaluation/tobacco_smoking_summary_v1/never.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-09-20T22:00:00.000+00:00", - "visitStartDateTime": "2020-09-20T22:00:00.000+00:00", - "visitEndDate": "2020-09-20T22:00:00.000+00:00", - "visitEndDateTime": "2020-09-20T22:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/instruction/medication_order_v2/multiple_entries.json b/src/test/java/json/output/medical_data/instruction/medication_order_v2/multiple_entries.json index cb82477..4bcb57f 100644 --- a/src/test/java/json/output/medical_data/instruction/medication_order_v2/multiple_entries.json +++ b/src/test/java/json/output/medical_data/instruction/medication_order_v2/multiple_entries.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2012-09-16T22:00:00.000+00:00", - "visitStartDateTime": "2012-09-16T22:00:00.000+00:00", - "visitEndDate": "2012-09-16T22:00:00.000+00:00", - "visitEndDateTime": "2012-09-16T22:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/instruction/medication_order_v2/no_coded_name.json b/src/test/java/json/output/medical_data/instruction/medication_order_v2/no_coded_name.json index ee14177..6ccd07b 100644 --- a/src/test/java/json/output/medical_data/instruction/medication_order_v2/no_coded_name.json +++ b/src/test/java/json/output/medical_data/instruction/medication_order_v2/no_coded_name.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2012-09-16T22:00:00.000+00:00", - "visitStartDateTime": "2012-09-16T22:00:00.000+00:00", - "visitEndDate": "2012-09-16T22:00:00.000+00:00", - "visitEndDateTime": "2012-09-16T22:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/instruction/medication_order_v2/with_route.json b/src/test/java/json/output/medical_data/instruction/medication_order_v2/with_route.json index 5905d3e..902b100 100644 --- a/src/test/java/json/output/medical_data/instruction/medication_order_v2/with_route.json +++ b/src/test/java/json/output/medical_data/instruction/medication_order_v2/with_route.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2012-09-16T22:00:00.000+00:00", - "visitStartDateTime": "2012-09-16T22:00:00.000+00:00", - "visitEndDate": "2012-09-16T22:00:00.000+00:00", - "visitEndDateTime": "2012-09-16T22:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/instruction/medication_order_v2/with_trade_name.json b/src/test/java/json/output/medical_data/instruction/medication_order_v2/with_trade_name.json index 5905d3e..902b100 100644 --- a/src/test/java/json/output/medical_data/instruction/medication_order_v2/with_trade_name.json +++ b/src/test/java/json/output/medical_data/instruction/medication_order_v2/with_trade_name.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2012-09-16T22:00:00.000+00:00", - "visitStartDateTime": "2012-09-16T22:00:00.000+00:00", - "visitEndDate": "2012-09-16T22:00:00.000+00:00", - "visitEndDateTime": "2012-09-16T22:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/instruction/medication_statement_v0/ace.json b/src/test/java/json/output/medical_data/instruction/medication_statement_v0/ace.json index 469c925..485eae4 100644 --- a/src/test/java/json/output/medical_data/instruction/medication_statement_v0/ace.json +++ b/src/test/java/json/output/medical_data/instruction/medication_statement_v0/ace.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-10-19T06:43:33.000+00:00", - "visitStartDateTime": "2020-10-19T06:43:33.000+00:00", - "visitEndDate": "2020-10-19T06:43:33.000+00:00", - "visitEndDateTime": "2020-10-19T06:43:33.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/instruction/medication_statement_v0/ace_with_reason.json b/src/test/java/json/output/medical_data/instruction/medication_statement_v0/ace_with_reason.json index 469c925..485eae4 100644 --- a/src/test/java/json/output/medical_data/instruction/medication_statement_v0/ace_with_reason.json +++ b/src/test/java/json/output/medical_data/instruction/medication_statement_v0/ace_with_reason.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-10-19T06:43:33.000+00:00", - "visitStartDateTime": "2020-10-19T06:43:33.000+00:00", - "visitEndDate": "2020-10-19T06:43:33.000+00:00", - "visitEndDateTime": "2020-10-19T06:43:33.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/instruction/medication_statement_v0/anticoagulant.json b/src/test/java/json/output/medical_data/instruction/medication_statement_v0/anticoagulant.json index 3542740..171b171 100644 --- a/src/test/java/json/output/medical_data/instruction/medication_statement_v0/anticoagulant.json +++ b/src/test/java/json/output/medical_data/instruction/medication_statement_v0/anticoagulant.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-10-19T06:43:33.000+00:00", - "visitStartDateTime": "2020-10-19T06:43:33.000+00:00", - "visitEndDate": "2020-10-19T06:43:33.000+00:00", - "visitEndDateTime": "2020-10-19T06:43:33.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/instruction/medication_statement_v0/multiple_entries.json b/src/test/java/json/output/medical_data/instruction/medication_statement_v0/multiple_entries.json index dea4755..4af88e9 100644 --- a/src/test/java/json/output/medical_data/instruction/medication_statement_v0/multiple_entries.json +++ b/src/test/java/json/output/medical_data/instruction/medication_statement_v0/multiple_entries.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-10-19T06:43:33.000+00:00", - "visitStartDateTime": "2020-10-19T06:43:33.000+00:00", - "visitEndDate": "2020-10-19T06:43:33.000+00:00", - "visitEndDateTime": "2020-10-19T06:43:33.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/observation/blood_pressure_v2/blood_pressure.json b/src/test/java/json/output/medical_data/observation/blood_pressure_v2/blood_pressure.json index efb1aeb..0b8a457 100644 --- a/src/test/java/json/output/medical_data/observation/blood_pressure_v2/blood_pressure.json +++ b/src/test/java/json/output/medical_data/observation/blood_pressure_v2/blood_pressure.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2012-09-16T22:00:00.000+00:00", - "visitStartDateTime": "2012-09-16T22:00:00.000+00:00", - "visitEndDate": "2012-09-16T22:00:00.000+00:00", - "visitEndDateTime": "2012-09-16T22:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/json/output/medical_data/observation/body_height_v2/body_height_100_inch.json b/src/test/java/json/output/medical_data/observation/body_height_v2/body_height_100_inch.json index 25d33ad..30a42ad 100644 --- a/src/test/java/json/output/medical_data/observation/body_height_v2/body_height_100_inch.json +++ b/src/test/java/json/output/medical_data/observation/body_height_v2/body_height_100_inch.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-10-01T22:00:00.000+00:00", - "visitStartDateTime": "2020-10-01T22:00:00.000+00:00", - "visitEndDate": "2020-10-01T22:00:00.000+00:00", - "visitEndDateTime": "2020-10-01T22:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", @@ -99,7 +31,7 @@ "idAsLong": "##ignore" }, "operatorConcept": null, - "valueAsNumber": 100, + "valueAsNumber": 130, "valueAsConcept": null, "unitConcept": { "id": "##ignore", @@ -130,7 +62,74 @@ "rangeLow": null, "rangeHigh": null, "provider": null, - "visitOccurrence": null, + "visitOccurrence": { + "id": "##ignore", + "person": "##ignore", + "visitConcept": { + "id": "##ignore", + "conceptName": "Inpatient Visit", + "domainId": "Visit", + "vocabularyId": "Visit", + "conceptClassId": "Visit", + "standardConcept": "S", + "conceptCode": "IP", + "validStartDate": "1969-12-31T23:00:00.000+00:00", + "validEndDate": "2099-12-30T23:00:00.000+00:00", + "invalidReason": null, + "idAsLong": "##ignore" + }, + "visitStartDate": "2020-10-01T22:00:00.000+00:00", + "visitStartDateTime": "2020-10-01T22:00:00.000+00:00", + "visitEndDate": "2020-10-01T22:00:00.000+00:00", + "visitEndDateTime": "2020-10-01T22:00:00.000+00:00", + "visitTypeConcept": { + "id": "##ignore", + "conceptName": "EHR", + "domainId": "Type Concept", + "vocabularyId": "Type Concept", + "conceptClassId": "Type Concept", + "standardConcept": "S", + "conceptCode": "OMOP4976890", + "validStartDate": "2020-08-19T22:00:00.000+00:00", + "validEndDate": "2099-12-30T23:00:00.000+00:00", + "invalidReason": null, + "idAsLong": "##ignore" + }, + "provider": null, + "careSite": null, + "visitSourceValue": null, + "visitSourceConcept": null, + "admittedFromConcept": { + "id": "##ignore", + "conceptName": "No matching concept", + "domainId": "Metadata", + "vocabularyId": "None", + "conceptClassId": "Undefined", + "standardConcept": null, + "conceptCode": "No matching concept", + "validStartDate": "1969-12-31T23:00:00.000+00:00", + "validEndDate": "2099-12-30T23:00:00.000+00:00", + "invalidReason": null, + "idAsLong": "##ignore" + }, + "admittedFromSourceValue": null, + "dischargedToConcept": { + "id": "##ignore", + "conceptName": "No matching concept", + "domainId": "Metadata", + "vocabularyId": "None", + "conceptClassId": "Undefined", + "standardConcept": null, + "conceptCode": "No matching concept", + "validStartDate": "1969-12-31T23:00:00.000+00:00", + "validEndDate": "2099-12-30T23:00:00.000+00:00", + "invalidReason": null, + "idAsLong": "##ignore" + }, + "dischargedToSourceValue": null, + "precedingVisitOccurrence": null, + "idAsLong": "##ignore" + }, "visitDetail": null, "measurementSourceValue": "3036277", "measurementSourceConcept": { @@ -147,7 +146,9 @@ "idAsLong": "##ignore" }, "unitSourceValue": "[in_i]", - "valueSourceValue": "100.0", + "valueSourceValue": "130.0", + "measurementEventId": null, + "measEventFieldConceptId": null, "time": null, "idAsLong": "##ignore" } diff --git a/src/test/java/json/output/medical_data/observation/body_height_v2/body_height_168_cm.json b/src/test/java/json/output/medical_data/observation/body_height_v2/body_height_168_cm.json index a430dcd..08d4ce9 100644 --- a/src/test/java/json/output/medical_data/observation/body_height_v2/body_height_168_cm.json +++ b/src/test/java/json/output/medical_data/observation/body_height_v2/body_height_168_cm.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-10-01T22:00:00.000+00:00", - "visitStartDateTime": "2020-10-01T22:00:00.000+00:00", - "visitEndDate": "2020-10-01T22:00:00.000+00:00", - "visitEndDateTime": "2020-10-01T22:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", @@ -99,7 +31,7 @@ "idAsLong": "##ignore" }, "operatorConcept": null, - "valueAsNumber": 168, + "valueAsNumber": 0, "valueAsConcept": null, "unitConcept": { "id": "##ignore", @@ -130,7 +62,74 @@ "rangeLow": null, "rangeHigh": null, "provider": null, - "visitOccurrence": null, + "visitOccurrence": { + "id": "##ignore", + "person": "##ignore", + "visitConcept": { + "id": "##ignore", + "conceptName": "Inpatient Visit", + "domainId": "Visit", + "vocabularyId": "Visit", + "conceptClassId": "Visit", + "standardConcept": "S", + "conceptCode": "IP", + "validStartDate": "1969-12-31T23:00:00.000+00:00", + "validEndDate": "2099-12-30T23:00:00.000+00:00", + "invalidReason": null, + "idAsLong": "##ignore" + }, + "visitStartDate": "2020-10-01T22:00:00.000+00:00", + "visitStartDateTime": "2020-10-01T22:00:00.000+00:00", + "visitEndDate": "2020-10-01T22:00:00.000+00:00", + "visitEndDateTime": "2020-10-01T22:00:00.000+00:00", + "visitTypeConcept": { + "id": "##ignore", + "conceptName": "EHR", + "domainId": "Type Concept", + "vocabularyId": "Type Concept", + "conceptClassId": "Type Concept", + "standardConcept": "S", + "conceptCode": "OMOP4976890", + "validStartDate": "2020-08-19T22:00:00.000+00:00", + "validEndDate": "2099-12-30T23:00:00.000+00:00", + "invalidReason": null, + "idAsLong": "##ignore" + }, + "provider": null, + "careSite": null, + "visitSourceValue": null, + "visitSourceConcept": null, + "admittedFromConcept": { + "id": "##ignore", + "conceptName": "No matching concept", + "domainId": "Metadata", + "vocabularyId": "None", + "conceptClassId": "Undefined", + "standardConcept": null, + "conceptCode": "No matching concept", + "validStartDate": "1969-12-31T23:00:00.000+00:00", + "validEndDate": "2099-12-30T23:00:00.000+00:00", + "invalidReason": null, + "idAsLong": "##ignore" + }, + "admittedFromSourceValue": null, + "dischargedToConcept": { + "id": "##ignore", + "conceptName": "No matching concept", + "domainId": "Metadata", + "vocabularyId": "None", + "conceptClassId": "Undefined", + "standardConcept": null, + "conceptCode": "No matching concept", + "validStartDate": "1969-12-31T23:00:00.000+00:00", + "validEndDate": "2099-12-30T23:00:00.000+00:00", + "invalidReason": null, + "idAsLong": "##ignore" + }, + "dischargedToSourceValue": null, + "precedingVisitOccurrence": null, + "idAsLong": "##ignore" + }, "visitDetail": null, "measurementSourceValue": "3036277", "measurementSourceConcept": { @@ -147,7 +146,9 @@ "idAsLong": "##ignore" }, "unitSourceValue": "cm", - "valueSourceValue": "168.0", + "valueSourceValue": "0.0", + "measurementEventId": null, + "measEventFieldConceptId": null, "time": null, "idAsLong": "##ignore" } diff --git a/src/test/java/json/output/medical_data/observation/body_height_v2/body_height_210_cm.json b/src/test/java/json/output/medical_data/observation/body_height_v2/body_height_210_cm.json index 83b78c7..241e747 100644 --- a/src/test/java/json/output/medical_data/observation/body_height_v2/body_height_210_cm.json +++ b/src/test/java/json/output/medical_data/observation/body_height_v2/body_height_210_cm.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-10-01T22:00:00.000+00:00", - "visitStartDateTime": "2020-10-01T22:00:00.000+00:00", - "visitEndDate": "2020-10-01T22:00:00.000+00:00", - "visitEndDateTime": "2020-10-01T22:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", @@ -130,7 +62,74 @@ "rangeLow": null, "rangeHigh": null, "provider": null, - "visitOccurrence": null, + "visitOccurrence": { + "id": "##ignore", + "person": "##ignore", + "visitConcept": { + "id": "##ignore", + "conceptName": "Inpatient Visit", + "domainId": "Visit", + "vocabularyId": "Visit", + "conceptClassId": "Visit", + "standardConcept": "S", + "conceptCode": "IP", + "validStartDate": "1969-12-31T23:00:00.000+00:00", + "validEndDate": "2099-12-30T23:00:00.000+00:00", + "invalidReason": null, + "idAsLong": "##ignore" + }, + "visitStartDate": "2020-10-01T22:00:00.000+00:00", + "visitStartDateTime": "2020-10-01T22:00:00.000+00:00", + "visitEndDate": "2020-10-01T22:00:00.000+00:00", + "visitEndDateTime": "2020-10-01T22:00:00.000+00:00", + "visitTypeConcept": { + "id": "##ignore", + "conceptName": "EHR", + "domainId": "Type Concept", + "vocabularyId": "Type Concept", + "conceptClassId": "Type Concept", + "standardConcept": "S", + "conceptCode": "OMOP4976890", + "validStartDate": "2020-08-19T22:00:00.000+00:00", + "validEndDate": "2099-12-30T23:00:00.000+00:00", + "invalidReason": null, + "idAsLong": "##ignore" + }, + "provider": null, + "careSite": null, + "visitSourceValue": null, + "visitSourceConcept": null, + "admittedFromConcept": { + "id": "##ignore", + "conceptName": "No matching concept", + "domainId": "Metadata", + "vocabularyId": "None", + "conceptClassId": "Undefined", + "standardConcept": null, + "conceptCode": "No matching concept", + "validStartDate": "1969-12-31T23:00:00.000+00:00", + "validEndDate": "2099-12-30T23:00:00.000+00:00", + "invalidReason": null, + "idAsLong": "##ignore" + }, + "admittedFromSourceValue": null, + "dischargedToConcept": { + "id": "##ignore", + "conceptName": "No matching concept", + "domainId": "Metadata", + "vocabularyId": "None", + "conceptClassId": "Undefined", + "standardConcept": null, + "conceptCode": "No matching concept", + "validStartDate": "1969-12-31T23:00:00.000+00:00", + "validEndDate": "2099-12-30T23:00:00.000+00:00", + "invalidReason": null, + "idAsLong": "##ignore" + }, + "dischargedToSourceValue": null, + "precedingVisitOccurrence": null, + "idAsLong": "##ignore" + }, "visitDetail": null, "measurementSourceValue": "3036277", "measurementSourceConcept": { @@ -148,6 +147,8 @@ }, "unitSourceValue": "cm", "valueSourceValue": "210.0", + "measurementEventId": null, + "measEventFieldConceptId": null, "time": null, "idAsLong": "##ignore" } diff --git a/src/test/java/json/output/medical_data/observation/body_mass_index_v2/body_mass_index_96.json b/src/test/java/json/output/medical_data/observation/body_mass_index_v2/body_mass_index_96.json index 5ed34d0..86ad21f 100644 --- a/src/test/java/json/output/medical_data/observation/body_mass_index_v2/body_mass_index_96.json +++ b/src/test/java/json/output/medical_data/observation/body_mass_index_v2/body_mass_index_96.json @@ -2,24 +2,22 @@ { "id": "##ignore", "person": "##ignore", - "visitConcept": { + "measurementConcept": { "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", + "conceptName": "Body mass index", + "domainId": "Measurement", + "vocabularyId": "SNOMED", + "conceptClassId": "Observable Entity", "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", + "conceptCode": "60621009", + "validStartDate": "2002-01-30T23:00:00.000+00:00", "validEndDate": "2099-12-30T23:00:00.000+00:00", "invalidReason": null, "idAsLong": "##ignore" }, - "visitStartDate": "2022-09-26T11:11:20.959+00:00", - "visitStartDateTime": "2022-09-26T11:11:20.959+00:00", - "visitEndDate": "2022-09-26T11:11:20.959+00:00", - "visitEndDateTime": "2022-09-26T11:11:20.959+00:00", - "visitTypeConcept": { + "measurementDate": "2022-09-26T11:11:21.039+00:00", + "measurementDateTime": "2022-09-26T11:11:21.039+00:00", + "measurementTypeConcept": { "id": "##ignore", "conceptName": "EHR", "domainId": "Type Concept", @@ -32,39 +30,126 @@ "invalidReason": null, "idAsLong": "##ignore" }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { + "operatorConcept": null, + "valueAsNumber": 48.1, + "valueAsConcept": null, + "unitConcept": { "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", + "conceptName": "kilogram per square meter", + "domainId": "Unit", + "vocabularyId": "UCUM", + "conceptClassId": "Unit", + "standardConcept": "S", + "conceptCode": "kg/m2", "validStartDate": "1969-12-31T23:00:00.000+00:00", "validEndDate": "2099-12-30T23:00:00.000+00:00", "invalidReason": null, "idAsLong": "##ignore" }, - "admittedFromSourceValue": null, - "dischargedToConcept": { + "unitSourceConcept": { "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", + "conceptName": "kilogram per square meter", + "domainId": "Unit", + "vocabularyId": "UCUM", + "conceptClassId": "Unit", + "standardConcept": "S", + "conceptCode": "kg/m2", "validStartDate": "1969-12-31T23:00:00.000+00:00", "validEndDate": "2099-12-30T23:00:00.000+00:00", "invalidReason": null, "idAsLong": "##ignore" }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, + "rangeLow": null, + "rangeHigh": null, + "provider": null, + "visitOccurrence": { + "id": "##ignore", + "person": "##ignore", + "visitConcept": { + "id": "##ignore", + "conceptName": "Inpatient Visit", + "domainId": "Visit", + "vocabularyId": "Visit", + "conceptClassId": "Visit", + "standardConcept": "S", + "conceptCode": "IP", + "validStartDate": "1969-12-31T23:00:00.000+00:00", + "validEndDate": "2099-12-30T23:00:00.000+00:00", + "invalidReason": null, + "idAsLong": "##ignore" + }, + "visitStartDate": "2022-09-26T11:11:20.959+00:00", + "visitStartDateTime": "2022-09-26T11:11:20.959+00:00", + "visitEndDate": "2022-09-26T11:11:20.959+00:00", + "visitEndDateTime": "2022-09-26T11:11:20.959+00:00", + "visitTypeConcept": { + "id": "##ignore", + "conceptName": "EHR", + "domainId": "Type Concept", + "vocabularyId": "Type Concept", + "conceptClassId": "Type Concept", + "standardConcept": "S", + "conceptCode": "OMOP4976890", + "validStartDate": "2020-08-19T22:00:00.000+00:00", + "validEndDate": "2099-12-30T23:00:00.000+00:00", + "invalidReason": null, + "idAsLong": "##ignore" + }, + "provider": null, + "careSite": null, + "visitSourceValue": null, + "visitSourceConcept": null, + "admittedFromConcept": { + "id": "##ignore", + "conceptName": "No matching concept", + "domainId": "Metadata", + "vocabularyId": "None", + "conceptClassId": "Undefined", + "standardConcept": null, + "conceptCode": "No matching concept", + "validStartDate": "1969-12-31T23:00:00.000+00:00", + "validEndDate": "2099-12-30T23:00:00.000+00:00", + "invalidReason": null, + "idAsLong": "##ignore" + }, + "admittedFromSourceValue": null, + "dischargedToConcept": { + "id": "##ignore", + "conceptName": "No matching concept", + "domainId": "Metadata", + "vocabularyId": "None", + "conceptClassId": "Undefined", + "standardConcept": null, + "conceptCode": "No matching concept", + "validStartDate": "1969-12-31T23:00:00.000+00:00", + "validEndDate": "2099-12-30T23:00:00.000+00:00", + "invalidReason": null, + "idAsLong": "##ignore" + }, + "dischargedToSourceValue": null, + "precedingVisitOccurrence": null, + "idAsLong": "##ignore" + }, + "visitDetail": null, + "measurementSourceValue": "4245997", + "measurementSourceConcept": { + "id": "##ignore", + "conceptName": "Body mass index", + "domainId": "Measurement", + "vocabularyId": "SNOMED", + "conceptClassId": "Observable Entity", + "standardConcept": "S", + "conceptCode": "60621009", + "validStartDate": "2002-01-30T23:00:00.000+00:00", + "validEndDate": "2099-12-30T23:00:00.000+00:00", + "invalidReason": null, + "idAsLong": "##ignore" + }, + "unitSourceValue": "kg/m2", + "valueSourceValue": "48.1", + "measurementEventId": null, + "measEventFieldConceptId": null, + "time": null, "idAsLong": "##ignore" } ] diff --git a/src/test/java/json/output/medical_data/observation/body_temperature_v2/body_temp.json b/src/test/java/json/output/medical_data/observation/body_temperature_v2/body_temp.json index be8d7e2..d251044 100644 --- a/src/test/java/json/output/medical_data/observation/body_temperature_v2/body_temp.json +++ b/src/test/java/json/output/medical_data/observation/body_temperature_v2/body_temp.json @@ -1,72 +1,4 @@ [ - { - "id": "##ignore", - "person": "##ignore", - "visitConcept": { - "id": "##ignore", - "conceptName": "Inpatient Visit", - "domainId": "Visit", - "vocabularyId": "Visit", - "conceptClassId": "Visit", - "standardConcept": "S", - "conceptCode": "IP", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "visitStartDate": "2020-09-24T22:00:00.000+00:00", - "visitStartDateTime": "2020-09-24T22:00:00.000+00:00", - "visitEndDate": "2020-09-24T22:00:00.000+00:00", - "visitEndDateTime": "2020-09-24T22:00:00.000+00:00", - "visitTypeConcept": { - "id": "##ignore", - "conceptName": "EHR", - "domainId": "Type Concept", - "vocabularyId": "Type Concept", - "conceptClassId": "Type Concept", - "standardConcept": "S", - "conceptCode": "OMOP4976890", - "validStartDate": "2020-08-19T22:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "provider": null, - "careSite": null, - "visitSourceValue": null, - "visitSourceConcept": null, - "admittedFromConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "admittedFromSourceValue": null, - "dischargedToConcept": { - "id": "##ignore", - "conceptName": "No matching concept", - "domainId": "Metadata", - "vocabularyId": "None", - "conceptClassId": "Undefined", - "standardConcept": null, - "conceptCode": "No matching concept", - "validStartDate": "1969-12-31T23:00:00.000+00:00", - "validEndDate": "2099-12-30T23:00:00.000+00:00", - "invalidReason": null, - "idAsLong": "##ignore" - }, - "dischargedToSourceValue": null, - "precedingVisitOccurrence": null, - "idAsLong": "##ignore" - }, { "id": "##ignore", "person": "##ignore", diff --git a/src/test/java/karate-config.js b/src/test/java/karate-config.js index 80e8005..2ad6320 100644 --- a/src/test/java/karate-config.js +++ b/src/test/java/karate-config.js @@ -2,7 +2,7 @@ function fn() { var config = { baseUrl: 'http://localhost:8081', - ehrId: '0fcbfd31-d5d9-46f9-a325-51dcde5f6d56', + ehrId: '77f6774b-c8aa-4826-8415-afcb25bc4001', action_composition_path: 'classpath:json/compositions/medical_data/action/', evaluation_composition_path: 'classpath:json/compositions/medical_data/evaluation/', instruction_composition_path: 'classpath:json/compositions/medical_data/instruction/',