Search in sources :

Example 6 with Encounter

use of org.mitre.synthea.world.concepts.HealthRecord.Encounter in project synthea by synthetichealth.

the class FhirStu3 method encounterClaim.

/**
 * Create an entry for the given Claim, associated to an Encounter.
 *
 * @param rand Source of randomness to use when generating ids etc
 * @param personEntry Entry for the person
 * @param bundle The Bundle to add to
 * @param encounterEntry The current Encounter
 * @param claim the Claim object
 * @return the added Entry
 */
private static BundleEntryComponent encounterClaim(RandomNumberGenerator rand, BundleEntryComponent personEntry, Bundle bundle, BundleEntryComponent encounterEntry, Claim claim) {
    org.hl7.fhir.dstu3.model.Claim claimResource = new org.hl7.fhir.dstu3.model.Claim();
    org.hl7.fhir.dstu3.model.Encounter encounterResource = (org.hl7.fhir.dstu3.model.Encounter) encounterEntry.getResource();
    claimResource.setStatus(ClaimStatus.ACTIVE);
    claimResource.setUse(org.hl7.fhir.dstu3.model.Claim.Use.COMPLETE);
    // duration of encounter
    claimResource.setBillablePeriod(encounterResource.getPeriod());
    claimResource.setPatient(new Reference(personEntry.getFullUrl()));
    claimResource.setOrganization(encounterResource.getServiceProvider());
    // add item for encounter
    claimResource.addItem(new ItemComponent(new PositiveIntType(1)).addEncounter(new Reference(encounterEntry.getFullUrl())));
    int itemSequence = 2;
    int conditionSequence = 1;
    int procedureSequence = 1;
    int informationSequence = 1;
    for (Claim.ClaimEntry claimEntry : claim.items) {
        HealthRecord.Entry item = claimEntry.entry;
        if (Costs.hasCost(item)) {
            // update claimItems list
            ItemComponent claimItem = new ItemComponent(new PositiveIntType(itemSequence));
            Code primaryCode = item.codes.get(0);
            String system = ExportHelper.getSystemURI(primaryCode.system);
            CodeableConcept serviceProvided = new CodeableConcept().addCoding(new Coding().setCode(primaryCode.code).setVersion("v1").setSystem(system));
            claimItem.setService(serviceProvided);
            // calculate the cost of the procedure
            Money moneyResource = new Money();
            moneyResource.setCode("USD");
            moneyResource.setSystem("urn:iso:std:iso:4217");
            moneyResource.setValue(item.getCost());
            claimItem.setNet(moneyResource);
            if (item instanceof HealthRecord.Procedure) {
                Type procedureReference = new Reference(item.fullUrl);
                ProcedureComponent claimProcedure = new ProcedureComponent(new PositiveIntType(procedureSequence), procedureReference);
                claimResource.addProcedure(claimProcedure);
                claimItem.addProcedureLinkId(procedureSequence);
                procedureSequence++;
            } else {
                Reference informationReference = new Reference(item.fullUrl);
                SpecialConditionComponent informationComponent = new SpecialConditionComponent();
                informationComponent.setSequence(informationSequence);
                informationComponent.setValue(informationReference);
                CodeableConcept category = new CodeableConcept();
                category.getCodingFirstRep().setSystem("http://hl7.org/fhir/claiminformationcategory").setCode("info");
                informationComponent.setCategory(category);
                claimResource.addInformation(informationComponent);
                claimItem.addInformationLinkId(informationSequence);
                claimItem.setService(claimResource.getType());
                informationSequence++;
            }
            claimResource.addItem(claimItem);
        } else {
            // assume it's a Condition, we don't have a Condition class specifically
            // add diagnosisComponent to claim
            Reference diagnosisReference = new Reference(item.fullUrl);
            org.hl7.fhir.dstu3.model.Claim.DiagnosisComponent diagnosisComponent = new org.hl7.fhir.dstu3.model.Claim.DiagnosisComponent(new PositiveIntType(conditionSequence), diagnosisReference);
            claimResource.addDiagnosis(diagnosisComponent);
            // update claimItems with diagnosis
            ItemComponent diagnosisItem = new ItemComponent(new PositiveIntType(itemSequence));
            diagnosisItem.addDiagnosisLinkId(conditionSequence);
            claimResource.addItem(diagnosisItem);
            conditionSequence++;
        }
        itemSequence++;
    }
    Money moneyResource = new Money();
    moneyResource.setCode("USD");
    moneyResource.setSystem("urn:iso:std:iso:4217");
    moneyResource.setValue(claim.getTotalClaimCost());
    claimResource.setTotal(moneyResource);
    return newEntry(rand, bundle, claimResource);
}
Also used : ProcedureComponent(org.hl7.fhir.dstu3.model.Claim.ProcedureComponent) PositiveIntType(org.hl7.fhir.dstu3.model.PositiveIntType) Money(org.hl7.fhir.dstu3.model.Money) Coding(org.hl7.fhir.dstu3.model.Coding) ItemComponent(org.hl7.fhir.dstu3.model.Claim.ItemComponent) SupplyDeliverySuppliedItemComponent(org.hl7.fhir.dstu3.model.SupplyDelivery.SupplyDeliverySuppliedItemComponent) Encounter(org.mitre.synthea.world.concepts.HealthRecord.Encounter) Procedure(org.mitre.synthea.world.concepts.HealthRecord.Procedure) Reference(org.hl7.fhir.dstu3.model.Reference) Code(org.mitre.synthea.world.concepts.HealthRecord.Code) ContactPoint(org.hl7.fhir.dstu3.model.ContactPoint) SpecialConditionComponent(org.hl7.fhir.dstu3.model.Claim.SpecialConditionComponent) HealthRecord(org.mitre.synthea.world.concepts.HealthRecord) Type(org.hl7.fhir.dstu3.model.Type) DigitalMediaType(org.hl7.fhir.dstu3.model.Media.DigitalMediaType) EncounterType(org.mitre.synthea.world.concepts.HealthRecord.EncounterType) CodeType(org.hl7.fhir.dstu3.model.CodeType) IntegerType(org.hl7.fhir.dstu3.model.IntegerType) PositiveIntType(org.hl7.fhir.dstu3.model.PositiveIntType) NodeType(org.hl7.fhir.utilities.xhtml.NodeType) StringType(org.hl7.fhir.dstu3.model.StringType) BooleanType(org.hl7.fhir.dstu3.model.BooleanType) DateType(org.hl7.fhir.dstu3.model.DateType) DateTimeType(org.hl7.fhir.dstu3.model.DateTimeType) BundleType(org.hl7.fhir.dstu3.model.Bundle.BundleType) DecimalType(org.hl7.fhir.dstu3.model.DecimalType) AllergyIntoleranceType(org.hl7.fhir.dstu3.model.AllergyIntolerance.AllergyIntoleranceType) Claim(org.mitre.synthea.world.concepts.Claim) CodeableConcept(org.hl7.fhir.dstu3.model.CodeableConcept)

Example 7 with Encounter

use of org.mitre.synthea.world.concepts.HealthRecord.Encounter in project synthea by synthetichealth.

the class CSVExporter method allergy.

/**
 * Write a single Allergy to allergies.csv.
 *
 * @param personID    ID of the person that has the allergy.
 * @param encounterID ID of the encounter where the allergy was diagnosed
 * @param allergy     The allergy itself
 * @throws IOException if any IO error occurs
 */
private void allergy(String personID, String encounterID, HealthRecord.Allergy allergy) throws IOException {
    // START,STOP,PATIENT,ENCOUNTER,CODE,SYSTEM,DESCRIPTION,TYPE,CATEGORY
    // REACTION1,DESCRIPTION1,SEVERITY1,
    // REACTION2,DESCRIPTION2,SEVERITY2
    StringBuilder s = new StringBuilder();
    s.append(dateFromTimestamp(allergy.start)).append(',');
    if (allergy.stop != 0L) {
        s.append(dateFromTimestamp(allergy.stop));
    }
    s.append(',');
    s.append(personID).append(',');
    s.append(encounterID).append(',');
    Code coding = allergy.codes.get(0);
    s.append(coding.code).append(',');
    s.append(getSystemFromURI(coding.system)).append(',');
    s.append(clean(coding.display)).append(',');
    if (allergy.allergyType != null) {
        s.append(allergy.allergyType);
    }
    s.append(',');
    if (allergy.category != null) {
        s.append(allergy.category);
    }
    s.append(',');
    int reactionsSize = 0;
    if (allergy.reactions != null) {
        reactionsSize = allergy.reactions.size();
    }
    Function<Map.Entry<HealthRecord.Code, HealthRecord.ReactionSeverity>, String> template = mapEntry -> {
        StringBuilder reactionBuilder = new StringBuilder();
        reactionBuilder.append(mapEntry.getKey().code).append(',');
        reactionBuilder.append(clean(mapEntry.getKey().display)).append(',');
        reactionBuilder.append(mapEntry.getValue());
        return reactionBuilder.toString();
    };
    switch(reactionsSize) {
        case 0:
            s.append(",,,,,");
            break;
        case 1:
            s.append(allergy.reactions.entrySet().stream().map(template).collect(Collectors.joining()));
            s.append(",,,");
            break;
        default:
            // case where there are more than two reactions so we need to support by severity
            s.append(allergy.reactions.entrySet().stream().sorted(Comparator.comparing(Map.Entry::getValue)).limit(2).map(template).collect(Collectors.joining(",")));
    }
    s.append(NEWLINE);
    write(s.toString(), allergies);
}
Also used : JsonObject(com.google.gson.JsonObject) Arrays(java.util.Arrays) Supply(org.mitre.synthea.world.concepts.HealthRecord.Supply) StringUtils(org.apache.commons.lang3.StringUtils) Medication(org.mitre.synthea.world.concepts.HealthRecord.Medication) BigDecimal(java.math.BigDecimal) Person(org.mitre.synthea.world.agents.Person) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Locale(java.util.Locale) Map(java.util.Map) Path(java.nio.file.Path) Encounter(org.mitre.synthea.world.concepts.HealthRecord.Encounter) RoundingMode(java.math.RoundingMode) RandomNumberGenerator(org.mitre.synthea.helpers.RandomNumberGenerator) GregorianCalendar(java.util.GregorianCalendar) RandomCodeGenerator(org.mitre.synthea.helpers.RandomCodeGenerator) HealthRecord(org.mitre.synthea.world.concepts.HealthRecord) Collectors(java.util.stream.Collectors) Utilities(org.mitre.synthea.helpers.Utilities) List(java.util.List) ExportHelper.dateFromTimestamp(org.mitre.synthea.export.ExportHelper.dateFromTimestamp) EncounterType(org.mitre.synthea.world.concepts.HealthRecord.EncounterType) Clinician(org.mitre.synthea.world.agents.Clinician) Function(java.util.function.Function) ArrayList(java.util.ArrayList) Calendar(java.util.Calendar) Charset(java.nio.charset.Charset) QualityOfLifeModule(org.mitre.synthea.modules.QualityOfLifeModule) Plan(org.mitre.synthea.world.concepts.CoverageRecord.Plan) Code(org.mitre.synthea.world.concepts.HealthRecord.Code) OutputStreamWriter(java.io.OutputStreamWriter) CarePlan(org.mitre.synthea.world.concepts.HealthRecord.CarePlan) Procedure(org.mitre.synthea.world.concepts.HealthRecord.Procedure) Device(org.mitre.synthea.world.concepts.HealthRecord.Device) Config(org.mitre.synthea.helpers.Config) Iterator(java.util.Iterator) ImagingStudy(org.mitre.synthea.world.concepts.HealthRecord.ImagingStudy) FileOutputStream(java.io.FileOutputStream) IOException(java.io.IOException) ExportHelper.getSystemFromURI(org.mitre.synthea.export.ExportHelper.getSystemFromURI) Payer(org.mitre.synthea.world.agents.Payer) Entry(org.mitre.synthea.world.concepts.HealthRecord.Entry) File(java.io.File) Provider(org.mitre.synthea.world.agents.Provider) CoverageRecord(org.mitre.synthea.world.concepts.CoverageRecord) AtomicLong(java.util.concurrent.atomic.AtomicLong) Claim(org.mitre.synthea.world.concepts.Claim) Observation(org.mitre.synthea.world.concepts.HealthRecord.Observation) NullOutputStream(org.apache.commons.io.output.NullOutputStream) Comparator(java.util.Comparator) ExportHelper.iso8601Timestamp(org.mitre.synthea.export.ExportHelper.iso8601Timestamp) Table(com.google.common.collect.Table) Collections(java.util.Collections) Entry(org.mitre.synthea.world.concepts.HealthRecord.Entry) HealthRecord(org.mitre.synthea.world.concepts.HealthRecord) Code(org.mitre.synthea.world.concepts.HealthRecord.Code) Map(java.util.Map)

Example 8 with Encounter

use of org.mitre.synthea.world.concepts.HealthRecord.Encounter in project synthea by synthetichealth.

the class Exporter method filterForExport.

/**
 * Filter the health record to only the last __ years
 * but also include relevant history from before that. Exclude
 * any history that occurs after the specified end_time -- typically
 * this is the current time/System.currentTimeMillis().
 *
 * @param record    The record to filter.
 * @param yearsToKeep The last __ years to keep.
 * @param endTime     The time the history ends.
 * @return Modified record with history expunged.
 */
private static HealthRecord filterForExport(HealthRecord record, int yearsToKeep, long endTime) {
    long cutoffDate = endTime - Utilities.convertTime("years", yearsToKeep);
    Predicate<HealthRecord.Entry> notFutureDated = e -> e.start <= endTime;
    for (Encounter encounter : record.encounters) {
        List<Claim.ClaimEntry> claimItems = encounter.claim.items;
        // keep conditions if still active, regardless of start date
        Predicate<HealthRecord.Entry> conditionActive = c -> record.conditionActive(c.type);
        // or if the condition was active at any point since the cutoff date
        Predicate<HealthRecord.Entry> activeWithinCutoff = c -> c.stop != 0L && c.stop > cutoffDate;
        Predicate<HealthRecord.Entry> keepCondition = conditionActive.or(activeWithinCutoff);
        filterEntries(encounter.conditions, claimItems, cutoffDate, endTime, keepCondition);
        // allergies are essentially the same as conditions
        // But we need to redefine all of the predicates, because we are talking about Allergies as
        // opposed to Entries... You would think that it would work... but generics are hard
        Predicate<HealthRecord.Allergy> allergyActive = c -> record.allergyActive(c.type);
        // or if the condition was active at any point since the cutoff date
        Predicate<HealthRecord.Allergy> allergyActiveWithinCutoff = c -> c.stop != 0L && c.stop > cutoffDate;
        Predicate<HealthRecord.Allergy> keepAllergy = allergyActive.or(allergyActiveWithinCutoff);
        filterEntries(encounter.allergies, claimItems, cutoffDate, endTime, keepAllergy);
        // some of the "future death" logic could potentially add a future-dated death certificate
        Predicate<Observation> isCauseOfDeath = o -> DeathModule.CAUSE_OF_DEATH_CODE.code.equals(o.type);
        // keep cause of death unless it's future dated
        Predicate<Observation> keepObservation = isCauseOfDeath.and(notFutureDated);
        filterEntries(encounter.observations, claimItems, cutoffDate, endTime, keepObservation);
        // keep all death certificates, unless they are future-dated
        Predicate<Report> isDeathCertificate = r -> DeathModule.DEATH_CERTIFICATE.code.equals(r.type);
        Predicate<Report> keepReport = isDeathCertificate.and(notFutureDated);
        filterEntries(encounter.reports, claimItems, cutoffDate, endTime, keepReport);
        filterEntries(encounter.procedures, claimItems, cutoffDate, endTime, null);
        // keep medications if still active, regardless of start date
        filterEntries(encounter.medications, claimItems, cutoffDate, endTime, med -> record.medicationActive(med.type));
        filterEntries(encounter.immunizations, claimItems, cutoffDate, endTime, null);
        // keep careplans if they are still active, regardless of start date
        filterEntries(encounter.careplans, claimItems, cutoffDate, endTime, cp -> record.careplanActive(cp.type));
    }
    // if ANY of these are not empty, the encounter is not empty
    Predicate<Encounter> encounterNotEmpty = e -> !e.conditions.isEmpty() || !e.allergies.isEmpty() || !e.observations.isEmpty() || !e.reports.isEmpty() || !e.procedures.isEmpty() || !e.medications.isEmpty() || !e.immunizations.isEmpty() || !e.careplans.isEmpty();
    Predicate<Encounter> isDeathCertification = e -> !e.codes.isEmpty() && DeathModule.DEATH_CERTIFICATION.equals(e.codes.get(0));
    Predicate<Encounter> keepEncounter = encounterNotEmpty.or(isDeathCertification.and(notFutureDated));
    // finally filter out any empty encounters
    filterEntries(record.encounters, Collections.emptyList(), cutoffDate, endTime, keepEncounter);
    return record;
}
Also used : Generator(org.mitre.synthea.engine.Generator) ArrayList(java.util.ArrayList) Person(org.mitre.synthea.world.agents.Person) Pair(org.apache.commons.lang3.tuple.Pair) FixedRecordGroup(org.mitre.synthea.input.FixedRecordGroup) LinkedList(java.util.LinkedList) Path(java.nio.file.Path) Encounter(org.mitre.synthea.world.concepts.HealthRecord.Encounter) IParser(ca.uhn.fhir.parser.IParser) PrintWriter(java.io.PrintWriter) Config(org.mitre.synthea.helpers.Config) Iterator(java.util.Iterator) Files(java.nio.file.Files) Report(org.mitre.synthea.world.concepts.HealthRecord.Report) BufferedWriter(java.io.BufferedWriter) Predicate(java.util.function.Predicate) FileWriter(java.io.FileWriter) StandardOpenOption(java.nio.file.StandardOpenOption) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HealthRecord(org.mitre.synthea.world.concepts.HealthRecord) IOException(java.io.IOException) BlockingQueue(java.util.concurrent.BlockingQueue) LinkedBlockingQueue(java.util.concurrent.LinkedBlockingQueue) File(java.io.File) ImmutablePair(org.apache.commons.lang3.tuple.ImmutablePair) Utilities(org.mitre.synthea.helpers.Utilities) Claim(org.mitre.synthea.world.concepts.Claim) List(java.util.List) Paths(java.nio.file.Paths) Observation(org.mitre.synthea.world.concepts.HealthRecord.Observation) DeathModule(org.mitre.synthea.modules.DeathModule) Collections(java.util.Collections) FixedRecord(org.mitre.synthea.input.FixedRecord) Report(org.mitre.synthea.world.concepts.HealthRecord.Report) Observation(org.mitre.synthea.world.concepts.HealthRecord.Observation) Encounter(org.mitre.synthea.world.concepts.HealthRecord.Encounter)

Example 9 with Encounter

use of org.mitre.synthea.world.concepts.HealthRecord.Encounter in project synthea by synthetichealth.

the class FhirDstu2 method medicationClaim.

/**
 * Create an entry for the given Claim, which references a Medication.
 *
 * @param rand
 *          Source of randomness to use when generating ids etc
 * @param personEntry
 *          Entry for the person
 * @param bundle
 *          The Bundle to add to
 * @param encounterEntry
 *          The current Encounter
 * @param claim
 *          the Claim object
 * @param medicationEntry
 *          The Entry for the Medication object, previously created
 * @return the added Entry
 */
private static Entry medicationClaim(RandomNumberGenerator rand, Entry personEntry, Bundle bundle, Entry encounterEntry, Claim claim, Entry medicationEntry) {
    ca.uhn.fhir.model.dstu2.resource.Claim claimResource = new ca.uhn.fhir.model.dstu2.resource.Claim();
    ca.uhn.fhir.model.dstu2.resource.Encounter encounterResource = (ca.uhn.fhir.model.dstu2.resource.Encounter) encounterEntry.getResource();
    // assume institutional claim
    // TODO review claim type
    claimResource.setType(ClaimTypeEnum.INSTITUTIONAL);
    claimResource.setUse(UseEnum.COMPLETE);
    claimResource.setPatient(new ResourceReferenceDt(personEntry.getFullUrl()));
    claimResource.setOrganization(encounterResource.getServiceProvider());
    // add prescription.
    claimResource.setPrescription(new ResourceReferenceDt(medicationEntry.getFullUrl()));
    return newEntry(rand, bundle, claimResource);
}
Also used : ResourceReferenceDt(ca.uhn.fhir.model.dstu2.composite.ResourceReferenceDt) Encounter(org.mitre.synthea.world.concepts.HealthRecord.Encounter) Claim(org.mitre.synthea.world.concepts.Claim)

Example 10 with Encounter

use of org.mitre.synthea.world.concepts.HealthRecord.Encounter in project synthea by synthetichealth.

the class FhirDstu2 method convertToFHIR.

/**
 * Convert the given Person into a FHIR Bundle with the Patient and the
 * associated entries from their health record.
 *
 * @param person Person to generate the FHIR Bundle
 * @param stopTime Time the simulation ended
 * @return String containing a FHIR Bundle containing the Person's health record
 */
public static Bundle convertToFHIR(Person person, long stopTime) {
    Bundle bundle = new Bundle();
    if (TRANSACTION_BUNDLE) {
        bundle.setType(BundleTypeEnum.TRANSACTION);
    } else {
        bundle.setType(BundleTypeEnum.COLLECTION);
    }
    Entry personEntry = basicInfo(person, bundle, stopTime);
    for (Encounter encounter : person.record.encounters) {
        Entry encounterEntry = encounter(person, personEntry, bundle, encounter);
        for (HealthRecord.Entry condition : encounter.conditions) {
            condition(person, personEntry, bundle, encounterEntry, condition);
        }
        for (HealthRecord.Entry allergy : encounter.allergies) {
            allergy(person, personEntry, bundle, encounterEntry, allergy);
        }
        for (Observation observation : encounter.observations) {
            // Observation resources in stu3 don't support Attachments
            if (observation.value instanceof Attachment) {
                media(person, personEntry, bundle, encounterEntry, observation);
            } else {
                observation(person, personEntry, bundle, encounterEntry, observation);
            }
        }
        for (Procedure procedure : encounter.procedures) {
            procedure(person, personEntry, bundle, encounterEntry, procedure);
        }
        for (Medication medication : encounter.medications) {
            medication(person, personEntry, bundle, encounterEntry, medication);
        }
        for (HealthRecord.Entry immunization : encounter.immunizations) {
            immunization(person, personEntry, bundle, encounterEntry, immunization);
        }
        for (Report report : encounter.reports) {
            report(person, personEntry, bundle, encounterEntry, report);
        }
        for (CarePlan careplan : encounter.careplans) {
            careplan(person, personEntry, bundle, encounterEntry, careplan);
        }
        for (ImagingStudy imagingStudy : encounter.imagingStudies) {
            imagingStudy(person, personEntry, bundle, encounterEntry, imagingStudy);
        }
        for (HealthRecord.Device device : encounter.devices) {
            device(person, personEntry, bundle, device);
        }
        for (HealthRecord.Supply supply : encounter.supplies) {
            supplyDelivery(person, personEntry, bundle, supply, encounter);
        }
        // one claim per encounter
        encounterClaim(person, personEntry, bundle, encounterEntry, encounter.claim);
    }
    return bundle;
}
Also used : Report(org.mitre.synthea.world.concepts.HealthRecord.Report) DiagnosticReport(ca.uhn.fhir.model.dstu2.resource.DiagnosticReport) Bundle(ca.uhn.fhir.model.dstu2.resource.Bundle) ImagingStudy(org.mitre.synthea.world.concepts.HealthRecord.ImagingStudy) Attachment(org.mitre.synthea.engine.Components.Attachment) Entry(ca.uhn.fhir.model.dstu2.resource.Bundle.Entry) HealthRecord(org.mitre.synthea.world.concepts.HealthRecord) CarePlan(org.mitre.synthea.world.concepts.HealthRecord.CarePlan) Observation(org.mitre.synthea.world.concepts.HealthRecord.Observation) Medication(org.mitre.synthea.world.concepts.HealthRecord.Medication) Encounter(org.mitre.synthea.world.concepts.HealthRecord.Encounter) Procedure(org.mitre.synthea.world.concepts.HealthRecord.Procedure)

Aggregations

Encounter (org.mitre.synthea.world.concepts.HealthRecord.Encounter)99 Test (org.junit.Test)54 Code (org.mitre.synthea.world.concepts.HealthRecord.Code)51 HealthRecord (org.mitre.synthea.world.concepts.HealthRecord)29 Person (org.mitre.synthea.world.agents.Person)28 ProviderTest (org.mitre.synthea.world.agents.ProviderTest)22 DeathModule (org.mitre.synthea.modules.DeathModule)17 QualityOfLifeModule (org.mitre.synthea.modules.QualityOfLifeModule)17 ArrayList (java.util.ArrayList)16 CardiovascularDiseaseModule (org.mitre.synthea.modules.CardiovascularDiseaseModule)16 EncounterModule (org.mitre.synthea.modules.EncounterModule)16 LifecycleModule (org.mitre.synthea.modules.LifecycleModule)16 WeightLossModule (org.mitre.synthea.modules.WeightLossModule)16 Provider (org.mitre.synthea.world.agents.Provider)16 Medication (org.mitre.synthea.world.concepts.HealthRecord.Medication)16 Observation (org.mitre.synthea.world.concepts.HealthRecord.Observation)16 Procedure (org.mitre.synthea.world.concepts.HealthRecord.Procedure)16 Report (org.mitre.synthea.world.concepts.HealthRecord.Report)14 Date (java.util.Date)13 Claim (org.mitre.synthea.world.concepts.Claim)12