Skip to content
This repository was archived by the owner on Jul 31, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,9 @@ CommandLineRunner initDatabase(DrugsRepository repository, RemsFhirRepository re
patientEnrollmentResource.setResource(patientQuestionnaireResource);
patientEnrollmentResource.setId("turalio-patient-enrollment");
remsFhirRepository.save(patientEnrollmentResource);
patientEnrollmentRequirement.setName("Patient Enrollment");
patientEnrollmentRequirement.setResource(patientEnrollmentResource);
patientEnrollmentRequirement.setDescription("complete patient enrollment questionnaire");
patientEnrollmentRequirement.setDescription("Submit Patient Enrollment form to the REMS Administrator");
patientEnrollmentRequirement.setDrug(turalio);
requirementRepository.save(patientEnrollmentRequirement);

Expand All @@ -75,8 +76,9 @@ CommandLineRunner initDatabase(DrugsRepository repository, RemsFhirRepository re
prescriberEnrollmentResource.setResource(prescriberQuestionnaireResource);
prescriberEnrollmentResource.setId("turalio-prescriber-enrollment");
remsFhirRepository.save(prescriberEnrollmentResource);
prescriberEnrollmentRequirement.setName("Prescriber Enrollment");
prescriberEnrollmentRequirement.setResource(prescriberEnrollmentResource);
prescriberEnrollmentRequirement.setDescription("complete prescriber enrollment questionnaire");
prescriberEnrollmentRequirement.setDescription("Submit Prescriber Enrollment form and training certification to the REMS Administrator");
prescriberEnrollmentRequirement.setDrug(turalio);
requirementRepository.save(prescriberEnrollmentRequirement);

Expand All @@ -89,11 +91,46 @@ CommandLineRunner initDatabase(DrugsRepository repository, RemsFhirRepository re
prescriberKnowledgeResource.setResource(prescriberKnowledgeQuestionnaireResource);
prescriberKnowledgeResource.setId("turalio-prescriber-knowledge-check");
remsFhirRepository.save(prescriberKnowledgeResource);
prescriberCertificationRequirement.setName("Prescriber Knowledge Assessment");
prescriberCertificationRequirement.setResource(prescriberKnowledgeResource);
prescriberCertificationRequirement.setDescription("complete prescriber knowledge check");
prescriberCertificationRequirement.setParent(prescriberEnrollmentRequirement);
prescriberCertificationRequirement.setDescription("Submit Prescriber Knowledge Assessment Form to REMS Administrator to receive certification");
prescriberCertificationRequirement.setParentRequirement(prescriberEnrollmentRequirement);
// prescriberCertificationRequirement.setDrug(turalio);
requirementRepository.save(prescriberCertificationRequirement);

// pharmacist enrollment form requirement
// change form below to pharmacist enrollment once form is translated
String pharmacistQuestionnaire = readFile("src/main/java/org/hl7/davinci/endpoint/rems/resources/Turalio/Questionnaire-R4-Prescriber-Enrollment.json", Charset.defaultCharset());
Requirement pharmacistEnrollmentRequirement = new Requirement();
RemsFhir pharmacistEnrollmentResource = new RemsFhir();
pharmacistEnrollmentResource.setResourceType(ResourceType.Questionnaire.toString());
JsonNode pharmacistQuestionnaireResource = JacksonUtil.toJsonNode(pharmacistQuestionnaire);
pharmacistEnrollmentResource.setResource(pharmacistQuestionnaireResource);
pharmacistEnrollmentResource.setId("turalio-pharmacist-enrollment");
remsFhirRepository.save(pharmacistEnrollmentResource);
pharmacistEnrollmentRequirement.setName("Pharmacist Enrollment");
pharmacistEnrollmentRequirement.setResource(pharmacistEnrollmentResource);
pharmacistEnrollmentRequirement.setDescription("Submit Pharmacist Enrollment form and training certification to the REMS Administrator");
pharmacistEnrollmentRequirement.setDrug(turalio);
requirementRepository.save(pharmacistEnrollmentRequirement);

// pharmacist knowledge assessment / certification sub-requirement
// change form below to pharmacist knowledge assessment once form is translated
String pharmacistKnowledgeQuestionnaire = readFile("src/main/java/org/hl7/davinci/endpoint/rems/resources/Turalio/Questionnaire-R4-Prescriber-Knowledge-Assessment.json", Charset.defaultCharset());
Requirement pharmacistCertificationRequirement = new Requirement();
RemsFhir pharmacistKnowledgeResource = new RemsFhir();
pharmacistKnowledgeResource.setResourceType(ResourceType.Questionnaire.toString());
JsonNode pharmacistKnowledgeQuestionnaireResource = JacksonUtil.toJsonNode(pharmacistKnowledgeQuestionnaire);
pharmacistKnowledgeResource.setResource(pharmacistKnowledgeQuestionnaireResource);
pharmacistKnowledgeResource.setId("turalio-pharmacist-knowledge-check");
remsFhirRepository.save(pharmacistKnowledgeResource);
pharmacistCertificationRequirement.setName("Pharmacist Knowledge Assessment");
pharmacistCertificationRequirement.setResource(pharmacistKnowledgeResource);
pharmacistCertificationRequirement.setDescription("Submit Pharmacist Knowledge Assessment Form to REMS Administrator to receive certification");
pharmacistCertificationRequirement.setParentRequirement(pharmacistEnrollmentRequirement);
// pharmacistCertificationRequirement.setDrug(turalio);
requirementRepository.save(pharmacistCertificationRequirement);

};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -118,15 +118,32 @@ public ResponseEntity<Object> postRems(@RequestBody String jsonData) {
remsRequest.setStatus("Pending");
remsRequest.setResource(remsObject);
remsRepository.save(remsRequest);

// this loop needs to change to handle multiple levels of sub-requirement conditions
// this loop needs to also handle parsing out resources for each requirement - may need to be separate endpoints

for (Requirement requirement : drug.getRequirements()) {
MetRequirement metReq = new MetRequirement();
metReq.setRequirement(requirement);
metReq.setRemsRequest(remsRequest);
remsRequest.addMetRequirement(metReq);

//logic to set requirement as met or not, for now hard code only patient enrollment form
if (requirement.getName().equals("Patient Enrollment")) {
metReq.setCompleted(true);
}

metRequirementsRepository.save(metReq);

// only handle one level of sub requirements for now
for (Requirement subRequirement : requirement.getChildRequirements()) {
MetRequirement subMetReq = new MetRequirement();
subMetReq.setRequirement(subRequirement);
// subMetReq.setRemsRequest(remsRequest);
subMetReq.setParentMetRequirement(metReq);
// remsRequest.addMetRequirement(subMetReq);
metReq.addChildMetRequirements(subMetReq);
metRequirementsRepository.save(subMetReq);
}


}
remsRepository.save(remsRequest);
updateRemsRequestStatusInBackground(id);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,31 +44,31 @@ public List<Requirement> getRequirements() {
return this.requirements;
}

public void setResource(List<Requirement> requirements) {
public void setRequirements(List<Requirement> requirements) {
this.requirements = requirements;
}

public void addRequirement(Requirement requirement) {
this.requirements.add(requirement);
}
public String getCreatedAt() {
return createdAt;
return this.createdAt;
}

public void setCreatedAt(String createdAt) {
this.createdAt = createdAt;
}

public String getCodeSystem() {
return codeSystem;
return this.codeSystem;
}

public void setCodeSystem(String codeSystem) {
this.codeSystem = codeSystem;
}

public String getCode() {
return code;
return this.code;
}

public void setCode(String code) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,15 @@ public void setResource(JsonNode resource) {
}

public String getResourceType() {
return resourceType;
return this.resourceType;
}

public void setResourceType(String resourceType) {
this.resourceType = resourceType;
}

public String getCreatedAt() {
return createdAt;
return this.createdAt;
}

public void setCreatedAt(String createdAt) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.hl7.davinci.endpoint.rems.database.rems;
import org.hl7.davinci.endpoint.rems.database.requirement.MetRequirement;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.*;
Expand Down Expand Up @@ -32,6 +33,7 @@ public class Rems {
private JsonNode resource;

@OneToMany(mappedBy="remsRequest", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JsonManagedReference
private List<MetRequirement> metRequirements = new ArrayList<>();

public void Rems() {}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.hl7.davinci.endpoint.rems.database.requirement;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.fasterxml.jackson.annotation.JsonBackReference;
import org.hl7.davinci.endpoint.rems.database.drugs.Drug;
import org.hl7.davinci.endpoint.rems.database.fhir.RemsFhir;
import org.hl7.davinci.endpoint.rems.database.rems.Rems;
Expand All @@ -22,7 +24,7 @@ public class MetRequirement {
private String createdAt;

@Column(name = "completed", nullable = false)
private boolean completed ;
private Boolean completed ;

// FHIR resource which defines the requirement (task, questionnaire, etc)
@JoinColumn(name = "completedRequirement", nullable = true)
Expand All @@ -31,26 +33,34 @@ public class MetRequirement {

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="REQUIREMENT_ID")
@JsonIgnore
private Requirement requirement;

@ManyToOne
@JoinColumn(name="REMS_REQUEST")
@JsonIgnore
@JsonBackReference
private Rems remsRequest;

@OneToMany(mappedBy="parentMetRequirement", fetch = FetchType.EAGER)
@JsonManagedReference
private List<MetRequirement> childMetRequirements = new ArrayList<>();

@ManyToOne
@JoinColumn(name="PARENT_MET_REQUIREMENT")
@JsonIgnore
@JoinColumn(name="PARENT_MET_REQUIREMENT", nullable = true)
@JsonBackReference
private MetRequirement parentMetRequirement;

public MetRequirement() {
this.createdAt = ZonedDateTime.now().format(DateTimeFormatter.ofPattern( "uuuu.MM.dd.HH.mm.ss" ));
this.completed = false; }

public Integer getId() {
return this.id;
}

public void setId(Integer id) {
this.id = id;
}

public Rems getRemsRequest() {
return this.remsRequest;
}
Expand All @@ -68,46 +78,45 @@ public void setCompletedRequirement(RemsFhir requirement) {
}

public String getCreatedAt() {
return createdAt;
return this.createdAt;
}

public void setCreatedAt(String createdAt) {
this.createdAt = createdAt;
}

public boolean isCompleted() {
return completed;
public Boolean getCompleted() {
return this.completed;
}

public void setCompleted(boolean completed) {
public void setCompleted(Boolean completed) {
this.completed = completed;
}

public Requirement getRequirement() {
return requirement;
return this.requirement;
}

public void setRequirement(Requirement requirement) {
this.requirement = requirement;
}

public List<MetRequirement> getChildren() {
public List<MetRequirement> getChildMetRequirements() {
return this.childMetRequirements;
}

public void setChildren(List<MetRequirement> requirements) {
public void setChildMetRequirements(List<MetRequirement> requirements) {
this.childMetRequirements = requirements;
}

public void addChild(MetRequirement requirement) {
public void addChildMetRequirements(MetRequirement requirement) {
this.childMetRequirements.add(requirement);
}

public MetRequirement getParent() {
public MetRequirement getParentMetRequirement () {
return this.parentMetRequirement;
}

public void setParent(MetRequirement requirement) {
public void setParentMetRequirement(MetRequirement requirement) {
this.parentMetRequirement = requirement;
}

Expand Down
Loading