use of org.hl7.fhir.dstu3.model.AllergyIntolerance.AllergyIntoleranceCategory in project synthea by synthetichealth.
the class FhirStu3 method allergy.
/**
* Map the Condition into a FHIR AllergyIntolerance resource, and add it to the given Bundle.
*
* @param rand Source of randomness to use when generating ids etc
* @param personEntry The Entry for the Person
* @param bundle The Bundle to add to
* @param encounterEntry The current Encounter entry
* @param allergy The Allergy Entry
* @return The added Entry
*/
private static BundleEntryComponent allergy(RandomNumberGenerator rand, BundleEntryComponent personEntry, Bundle bundle, BundleEntryComponent encounterEntry, HealthRecord.Entry allergy) {
AllergyIntolerance allergyResource = new AllergyIntolerance();
allergyResource.setAssertedDate(new Date(allergy.start));
if (allergy.stop == 0) {
allergyResource.setClinicalStatus(AllergyIntoleranceClinicalStatus.ACTIVE);
} else {
allergyResource.setClinicalStatus(AllergyIntoleranceClinicalStatus.INACTIVE);
}
allergyResource.setType(AllergyIntoleranceType.ALLERGY);
AllergyIntoleranceCategory category = AllergyIntoleranceCategory.FOOD;
// TODO: allergy categories in GMF
allergyResource.addCategory(category);
allergyResource.setCriticality(AllergyIntoleranceCriticality.LOW);
allergyResource.setVerificationStatus(AllergyIntoleranceVerificationStatus.CONFIRMED);
allergyResource.setPatient(new Reference(personEntry.getFullUrl()));
Code code = allergy.codes.get(0);
allergyResource.setCode(mapCodeToCodeableConcept(code, SNOMED_URI));
if (USE_SHR_EXTENSIONS) {
Meta meta = new Meta();
meta.addProfile(SHR_EXT + "shr-allergy-AllergyIntolerance");
// required fields for AllergyIntolerance profile are:
// verificationStatus, code, patient, assertedDate
allergyResource.setMeta(meta);
}
BundleEntryComponent allergyEntry = newEntry(rand, bundle, allergyResource);
allergy.fullUrl = allergyEntry.getFullUrl();
return allergyEntry;
}
use of org.hl7.fhir.dstu3.model.AllergyIntolerance.AllergyIntoleranceCategory in project synthea by synthetichealth.
the class FhirR4 method allergy.
/**
* Map the Condition into a FHIR AllergyIntolerance resource, and add it to the given Bundle.
*
* @param rand Source of randomness to use when generating ids etc
* @param personEntry The Entry for the Person
* @param bundle The Bundle to add to
* @param encounterEntry The current Encounter entry
* @param allergy The Allergy Entry
* @return The added Entry
*/
private static BundleEntryComponent allergy(RandomNumberGenerator rand, BundleEntryComponent personEntry, Bundle bundle, BundleEntryComponent encounterEntry, HealthRecord.Allergy allergy) {
AllergyIntolerance allergyResource = new AllergyIntolerance();
allergyResource.setRecordedDate(new Date(allergy.start));
CodeableConcept status = new CodeableConcept();
status.getCodingFirstRep().setSystem("http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical");
allergyResource.setClinicalStatus(status);
if (allergy.stop == 0) {
status.getCodingFirstRep().setCode("active");
} else {
status.getCodingFirstRep().setCode("inactive");
}
if (allergy.allergyType == null || allergy.allergyType.equalsIgnoreCase("allergy")) {
allergyResource.setType(AllergyIntoleranceType.ALLERGY);
} else {
allergyResource.setType(AllergyIntoleranceType.INTOLERANCE);
}
AllergyIntoleranceCategory category = null;
if (allergy.category != null) {
switch(allergy.category) {
case "food":
category = AllergyIntoleranceCategory.FOOD;
break;
case "medication":
category = AllergyIntoleranceCategory.MEDICATION;
break;
case "environment":
category = AllergyIntoleranceCategory.ENVIRONMENT;
break;
case "biologic":
category = AllergyIntoleranceCategory.BIOLOGIC;
break;
default:
category = AllergyIntoleranceCategory.MEDICATION;
}
}
allergyResource.addCategory(category);
allergyResource.setCriticality(AllergyIntoleranceCriticality.LOW);
CodeableConcept verification = new CodeableConcept();
verification.getCodingFirstRep().setSystem("http://terminology.hl7.org/CodeSystem/allergyintolerance-verification").setCode("confirmed");
allergyResource.setVerificationStatus(verification);
allergyResource.setPatient(new Reference(personEntry.getFullUrl()));
Code code = allergy.codes.get(0);
allergyResource.setCode(mapCodeToCodeableConcept(code, SNOMED_URI));
if (allergy.reactions != null) {
allergy.reactions.keySet().stream().forEach(manifestation -> {
AllergyIntolerance.AllergyIntoleranceReactionComponent reactionComponent = new AllergyIntolerance.AllergyIntoleranceReactionComponent();
reactionComponent.addManifestation(mapCodeToCodeableConcept(manifestation, SNOMED_URI));
HealthRecord.ReactionSeverity severity = allergy.reactions.get(manifestation);
switch(severity) {
case MILD:
reactionComponent.setSeverity(AllergyIntolerance.AllergyIntoleranceSeverity.MILD);
break;
case MODERATE:
reactionComponent.setSeverity(AllergyIntolerance.AllergyIntoleranceSeverity.MODERATE);
break;
case SEVERE:
reactionComponent.setSeverity(AllergyIntolerance.AllergyIntoleranceSeverity.SEVERE);
break;
default:
}
allergyResource.addReaction(reactionComponent);
});
}
if (USE_US_CORE_IG) {
Meta meta = new Meta();
meta.addProfile("http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance");
allergyResource.setMeta(meta);
}
BundleEntryComponent allergyEntry = newEntry(rand, bundle, allergyResource);
allergy.fullUrl = allergyEntry.getFullUrl();
return allergyEntry;
}
Aggregations