Skip to content

Commit

Permalink
add ISH report
Browse files Browse the repository at this point in the history
  • Loading branch information
mozzy11 committed Oct 26, 2023
1 parent 2d22800 commit d7a9d07
Show file tree
Hide file tree
Showing 9 changed files with 387 additions and 105 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,11 @@ function ImmunohistochemistryCaseView() {
diagnosis: "",
molecularSubType: "",
conclusion : "",
ihcScore: "",
ihcRatio: "",
averageChrom: "",
averageHer2: "",
numberOfcancerNuclei: "",
toggled : false
},
});
Expand Down Expand Up @@ -478,7 +483,132 @@ function ImmunohistochemistryCaseView() {
</>
);
case "DUAL_IN_SITU_HYBRIDISATION":
return <></>;
return <>

<Column lg={16} md={8} sm={4}>
<Grid fullWidth={true} className="gridBoundary">
<Column lg={3} md={8} sm={4}>
Number of Cancer nuclei
</Column>
<Column lg={5} md={8} sm={4}>
<TextInput
id={"nuclei_" + index}
labelText=""
hideLabel={true}
value={reportParams[index]?.numberOfcancerNuclei}
onChange={(e) => {
var params = { ...reportParams };
if (!params[index]) {
params[index] = {};
}
params[index].numberOfcancerNuclei = e.target.value;
setReportParams(params);
}}
/>
</Column>
<Column lg={16} md={8} sm={4}>
<div> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>
</Column>
<Column lg={3} md={8} sm={4}>
Average HER2 per nucleus
</Column>
<Column lg={5} md={8} sm={4}>
<TextInput
id={"her_" + index}
labelText=""
hideLabel={true}
value={reportParams[index]?.averageHer2}
onChange={(e) => {
var params = { ...reportParams };
if (!params[index]) {
params[index] = {};
}
params[index].averageHer2 = e.target.value;
var her2 = e.target.value;
var chrom = params[index].averageChrom;
if(chrom){
var ratio = her2/chrom ;
params[index].ihcRatio = ratio;
if (ratio >= 2.0) {
params[index].ihcScore = "AMPLIFICATION"
}else{
params[index].ihcScore = "NO_AMPLIFICATION"
}
}
setReportParams(params);
}}
/>
</Column>
<Column lg={16} md={8} sm={4}>
<div> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>
</Column>
<Column lg={3} md={8} sm={4}>
Average Chromozome 17 Sinals per nucleus
</Column>
<Column lg={5} md={8} sm={4}>
<TextInput
id={"her_" + index}
labelText=""
hideLabel={true}
value={reportParams[index]?.averageChrom}
onChange={(e) => {
var params = { ...reportParams };
if (!params[index]) {
params[index] = {};
}
params[index].averageChrom = e.target.value;
var her2 = params[index].averageHer2
var chrom = e.target.value;
if(her2){
var ratio = her2/chrom ;
params[index].ihcRatio = ratio;
if (ratio >= 2.0) {
params[index].ihcScore = "AMPLIFICATION"
}else{
params[index].ihcScore = "NO_AMPLIFICATION"
}
}
setReportParams(params);
}}
/>
</Column>
<Column lg={16} md={8} sm={4}>
<div> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>
</Column>
<Column lg={3} md={8} sm={4}>
Ratio of Her2/neu Signals to Chromozome 17
</Column>
<Column lg={5} md={8} sm={4}>
<TextInput
id={"her_" + index}
labelText=""
hideLabel={true}
disabled={true}
value={reportParams[index]?.ihcRatio}
/>
</Column>

<Column lg={16} md={8} sm={4}>
<div> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>
</Column>
<Column lg={3} md={8} sm={4}>
IHC (Cerb2 Scoer)
</Column>
<Column lg={5} md={8} sm={4}>
<TextInput
id={"her_" + index}
labelText=""
hideLabel={true}
disabled={true}
value={reportParams[index]?.ihcScore}
/>
</Column>

</Grid>
</Column>


</>;
case "IMMUNOHISTOCHEMISTRY":
return <>
<Column lg={16} md={8} sm={4}>
Expand Down Expand Up @@ -990,6 +1120,11 @@ function ImmunohistochemistryCaseView() {
diagnosis: reportParams[index]?.diagnosis,
molecularSubType: reportParams[index]?.molecularSubType,
conclusion: reportParams[index]?.conclusion,
ihcScore: reportParams[index]?.ihcScore,
ihcRatio: reportParams[index]?.ihcRatio,
averageChrom: reportParams[index]?.averageChrom,
averageHer2: reportParams[index]?.averageHer2,
numberOfcancerNuclei: reportParams[index]?.numberOfcancerNuclei,
};
postToOpenElisServerFullResponse(
"/rest/ReportPrint",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

public class BreastCancerHormoneReceptorReport extends PatientProgramReport {

protected ImmunohistochemistrySampleService immunohistochemistrySampleService = SpringContext
private ImmunohistochemistrySampleService immunohistochemistrySampleService = SpringContext
.getBean(ImmunohistochemistrySampleService.class);

private ImmunohistochemistrySample immunohistochemistrySample;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,38 @@
package org.openelisglobal.reports.action.implementation;

import org.openelisglobal.internationalization.MessageUtil;
import org.openelisglobal.program.service.ImmunohistochemistrySampleService;
import org.openelisglobal.program.valueholder.immunohistochemistry.ImmunohistochemistrySample;
import org.openelisglobal.reports.form.ReportForm;
import org.openelisglobal.spring.util.SpringContext;

public class DualInSituHybridizationReport extends PatientProgramReport{

public class DualInSituHybridizationReport extends PatientProgramReport {

private ImmunohistochemistrySampleService immunohistochemistrySampleService = SpringContext
.getBean(ImmunohistochemistrySampleService.class);

private ImmunohistochemistrySample immunohistochemistrySample;

@Override
protected String getReportName() {
return "DualInSituHybridizationReport";
}

@Override
protected void setAdditionalReportItems() {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'setAdditionalReportItems'");
String reportDetails = MessageUtil.getMessage("dualInSitu.report.details", new String[] {
form.getNumberOfcancerNuclei(), form.getAverageHer2(), form.getAverageChrom(), form.getIhcRatio() });
data.setIhcReportDetails(reportDetails);
if (form.getIhcScore().equals("AMPLIFICATION")) {
data.setIhcScore(MessageUtil.getMessage("dualInSitu.label.amp"));
} else {
data.setIhcScore(MessageUtil.getMessage("dualInSitu.label.noAmp"));
}
}

@Override
protected void innitializeSample(ReportForm form) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'innitializeSample'");
immunohistochemistrySample = immunohistochemistrySampleService.get(Integer.valueOf(form.getProgramSampleId()));
sample = immunohistochemistrySample.getSample();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -129,66 +129,11 @@ public final class ProgramSampleReportData {

private String mibResult;

public ProgramSampleReportData() {
}
private String ihcReportDetails;

public ProgramSampleReportData(ProgramSampleReportData data) {
patientName = data.getPatientName();
nationalId = data.getNationalId();
gender = data.getGender();
dob = data.getDob();
age = data.getAge();
stNumber = data.getStNumber();
subjectNumber = data.getSubjectNumber();
contactInfo = data.getContactInfo();
siteInfo = data.getSiteInfo();
testName = data.getTestName();
testRefRange = data.getTestRefRange();
conclusion = data.getConclusion();
finishDate = data.getFinishDate();
accessionNumber = data.getAccessionNumber();
receivedDate = data.getReceivedDate();
testDate = data.getTestDate();
referralSentDate = data.getReferralSentDate();
referralTestName = data.getReferralTestName();
referralResult = data.getReferralResult();
referralResultReportDate = data.getReferralResultReportDate();
referralReason = data.getReferralReason();
referralRefRange = data.getReferralRefRange();
referralNote = data.getReferralNote();
firstName = data.getFirstName();
lastName = data.getLastName();
dept = data.getDept();
commune = data.getCommune();
healthDistrict = data.getHealthDistrict();
healthRegion = data.getHealthRegion();
sectionSortOrder = data.getSectionSortOrder();
testSortOrder = data.getTestSortOrder();
orderDate = data.getOrderDate();
patientSiteNumber = data.getPatientSiteNumber();
parentMarker = data.getParentMarker();
billingNumber = data.getBillingNumber();
sampleType = data.getSampleType();
sampleId = data.getSampleId();
sampleSortOrder = data.getSampleSortOrder();
analysisStatus = data.getAnalysisStatus();
completeFlag = data.getCompleteFlag();

orderFinishDate = data.getOrderFinishDate();

collectionDateTime = data.getCollectionDateTime();

correctedResult = data.getCorrectedResult();

labOrderType = data.getLabOrderType();

grossExam = data.getGrossExam();

microExam = data.getMicroExam();

codedConclusion = data.getCodedConclusion();

textConclusion = data.getTextConclusion();
private String ihcScore;

public ProgramSampleReportData() {
}

public String getReferralRefRange() {
Expand Down Expand Up @@ -684,6 +629,22 @@ public void setMibResult(String mibResult) {
this.mibResult = mibResult;
}

public String getIhcReportDetails() {
return ihcReportDetails;
}

public void setIhcReportDetails(String ihcReportDetails) {
this.ihcReportDetails = ihcReportDetails;
}

public String getIhcScore() {
return ihcScore;
}

public void setIhcScore(String ihcScore) {
this.ihcScore = ihcScore;
}

public static class Result {

private String result;
Expand Down
49 changes: 49 additions & 0 deletions src/main/java/org/openelisglobal/reports/form/ReportForm.java
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,16 @@ public enum ReceptionTime {

private String conclusion;

private String ihcScore;

private String ihcRatio;

private String averageChrom;

private String averageHer2;

private String numberOfcancerNuclei;

// for display
private List<IdValuePair> priorityList;

Expand Down Expand Up @@ -763,4 +773,43 @@ public void setConclusion(String conclusion) {
this.conclusion = conclusion;
}

public String getIhcScore() {
return ihcScore;
}

public void setIhcScore(String ihcScore) {
this.ihcScore = ihcScore;
}

public String getIhcRatio() {
return ihcRatio;
}

public void setIhcRatio(String ihcRatio) {
this.ihcRatio = ihcRatio;
}

public String getAverageChrom() {
return averageChrom;
}

public void setAverageChrom(String averageChrom) {
this.averageChrom = averageChrom;
}

public String getAverageHer2() {
return averageHer2;
}

public void setAverageHer2(String averageHer2) {
this.averageHer2 = averageHer2;
}

public String getNumberOfcancerNuclei() {
return numberOfcancerNuclei;
}

public void setNumberOfcancerNuclei(String numberOfcancerNuclei) {
this.numberOfcancerNuclei = numberOfcancerNuclei;
}
}
20 changes: 19 additions & 1 deletion src/main/resources/languages/message_en.properties
Original file line number Diff line number Diff line change
Expand Up @@ -7830,6 +7830,24 @@ immunochemmistry.label.results = ImmunoHistoChemistry Results
immunochemmistry.label.results.decription = In Presence of Adequate and appropriate controls ,ImmunoHistoChemical stains were perfomed. \
The tumor cell howed the following staining profile
immunochemmistry.label.report = ImmunoHistoChemistry Report
breastCancer.label.report = Breast Cancer Hormone Receptor Status Report
breastCancer.label.report = Breast Cancer Hormone Receptor Status Report
dualInSitu.label.report = Dual In Situ Hybridisation (ISH) Report
dualInSitu.label.result = INFORM HER2 DUAL ISHDNA PROBE COCKTAIL ASSAY RESULT
dualInSitu.label.result.description = DISH was performed using inform Her2 Dual ISH DNA probe CockTail Assay (FDA Approved) which is designed to quantitatively \
detect amplification by light microscopy of the HER2 gene via two color chromogenic in Situ Hybridisation ; \
which is a combination of a black signal for HER2 gene and a red signal for hromosome 17.
dualInSitu.report.details = Analysis of <u> {0} </u> cancer Nuclei , revealed an average of <u> {1} </u> Her2/neu signals and \
and an averahe of <u> {2} </u> Chromozome 17 Signals per nuclei scored . The Ratio of the Average Her2/neu Signal to average Chromozome 17 \
signal was <u> {3} </u>
dualInSitu.label.ihcIntepretation = IHC (CerB2 score) Intepretation
dualInSitu.label.interpretation = Intepretation
dualInSitu.label.amp = Amplification
dualInSitu.label.noAmp = No Amplification
dualInSitu.label.comment : Comment : This essay will not detect other abnomalities that may have clinical siginificance. This result must be evaluated in conjuction with other Clinical \
and other Laboratory parameters .The test is used for Diagnostic purposes only.






Loading

0 comments on commit d7a9d07

Please sign in to comment.