use of ca.uhn.fhir.model.dstu2.valueset.GoalStatusEnum in project synthea by synthetichealth.
the class FhirDstu2 method careplan.
/**
* Map the given CarePlan to a FHIR CarePlan 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
* Bundle to add the CarePlan to
* @param encounterEntry
* Current Encounter entry
* @param carePlan
* The CarePlan to map to FHIR and add to the bundle
* @return The added Entry
*/
private static Entry careplan(RandomNumberGenerator rand, Entry personEntry, Bundle bundle, Entry encounterEntry, CarePlan carePlan) {
ca.uhn.fhir.model.dstu2.resource.CarePlan careplanResource = new ca.uhn.fhir.model.dstu2.resource.CarePlan();
careplanResource.setSubject(new ResourceReferenceDt(personEntry.getFullUrl()));
careplanResource.setContext(new ResourceReferenceDt(encounterEntry.getFullUrl()));
Code code = carePlan.codes.get(0);
careplanResource.addCategory(mapCodeToCodeableConcept(code, SNOMED_URI));
NarrativeDt narrative = new NarrativeDt();
narrative.setStatus(NarrativeStatusEnum.GENERATED);
narrative.setDiv(code.display);
careplanResource.setText(narrative);
CarePlanActivityStatusEnum activityStatus;
GoalStatusEnum goalStatus;
PeriodDt period = new PeriodDt().setStart(new DateTimeDt(new Date(carePlan.start)));
careplanResource.setPeriod(period);
if (carePlan.stop != 0L) {
period.setEnd(new DateTimeDt(new Date(carePlan.stop)));
careplanResource.setStatus(CarePlanStatusEnum.COMPLETED);
activityStatus = CarePlanActivityStatusEnum.COMPLETED;
goalStatus = GoalStatusEnum.ACHIEVED;
} else {
careplanResource.setStatus(CarePlanStatusEnum.ACTIVE);
activityStatus = CarePlanActivityStatusEnum.IN_PROGRESS;
goalStatus = GoalStatusEnum.IN_PROGRESS;
}
if (!carePlan.activities.isEmpty()) {
for (Code activity : carePlan.activities) {
Activity activityComponent = new Activity();
ActivityDetail activityDetailComponent = new ActivityDetail();
activityDetailComponent.setStatus(activityStatus);
activityDetailComponent.setCode(mapCodeToCodeableConcept(activity, SNOMED_URI));
activityDetailComponent.setProhibited(new BooleanDt(false));
activityComponent.setDetail(activityDetailComponent);
careplanResource.addActivity(activityComponent);
}
}
if (!carePlan.reasons.isEmpty()) {
// Only one element in list
Code reason = carePlan.reasons.get(0);
for (Entry entry : bundle.getEntry()) {
if (entry.getResource().getResourceName().equals("Condition")) {
Condition condition = (Condition) entry.getResource();
// Only one element in list
CodingDt coding = condition.getCode().getCoding().get(0);
if (reason.code.equals(coding.getCode())) {
careplanResource.addAddresses().setReference(entry.getFullUrl());
}
}
}
}
for (JsonObject goal : carePlan.goals) {
Entry goalEntry = caregoal(rand, bundle, goalStatus, goal);
careplanResource.addGoal().setReference(goalEntry.getFullUrl());
}
return newEntry(rand, bundle, careplanResource);
}
use of ca.uhn.fhir.model.dstu2.valueset.GoalStatusEnum in project synthea by synthetichealth.
the class FhirDstu2 method caregoal.
/**
* Map the JsonObject into a FHIR Goal resource, and add it to the given Bundle.
*
* @param rand Source of randomness to use when generating ids etc
* @param bundle The Bundle to add to
* @param goalStatus The GoalStatus
* @param goal The JsonObject
* @return The added Entry
*/
private static Entry caregoal(RandomNumberGenerator rand, Bundle bundle, GoalStatusEnum goalStatus, JsonObject goal) {
ca.uhn.fhir.model.dstu2.resource.Goal goalResource = new ca.uhn.fhir.model.dstu2.resource.Goal();
goalResource.setStatus(goalStatus);
if (goal.has("text")) {
goalResource.setDescription(goal.get("text").getAsString());
} else if (goal.has("codes")) {
JsonObject code = goal.get("codes").getAsJsonArray().get(0).getAsJsonObject();
goalResource.setDescription(code.get("display").getAsString());
} else if (goal.has("observation")) {
// build up our own text from the observation condition, similar to the graphviz logic
JsonObject logic = goal.get("observation").getAsJsonObject();
String[] text = { logic.get("codes").getAsJsonArray().get(0).getAsJsonObject().get("display").getAsString(), logic.get("operator").getAsString(), logic.get("value").getAsString() };
goalResource.setDescription(String.join(" ", text));
}
if (goal.has("addresses")) {
for (JsonElement reasonElement : goal.get("addresses").getAsJsonArray()) {
if (reasonElement instanceof JsonObject) {
JsonObject reasonObject = reasonElement.getAsJsonObject();
String reasonCode = reasonObject.get("codes").getAsJsonObject().get("SNOMED-CT").getAsJsonArray().get(0).getAsString();
for (Entry entry : bundle.getEntry()) {
if (entry.getResource().getResourceName().equals("Condition")) {
Condition condition = (Condition) entry.getResource();
// Only one element in list
CodingDt coding = condition.getCode().getCoding().get(0);
if (reasonCode.equals(coding.getCode())) {
goalResource.addAddresses().setReference(entry.getFullUrl());
}
}
}
}
}
}
return newEntry(rand, bundle, goalResource);
}
Aggregations