Skip to content

Commit

Permalink
BFD-3665 moving security tag check to before building transformClaim
Browse files Browse the repository at this point in the history
BFD-3665 moving security tag check  to before building transformClaim
  • Loading branch information
MahiFentaye committed Jan 7, 2025
1 parent 876e691 commit 46093ca
Show file tree
Hide file tree
Showing 18 changed files with 138 additions and 110 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,11 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) {
}
ExplanationOfBenefit eob;
try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) {
eob = transformClaim((CarrierClaim) claim, includeTaxNumber);
CarrierClaim carrierClaim = (CarrierClaim) claim;
String securityTag =
lookUpSamhsaSecurityTags.getClaimSecurityLevel(
String.valueOf(carrierClaim.getClaimId()), CarrierTag.class);
eob = transformClaim(carrierClaim, includeTaxNumber, securityTag);
}
return eob;
}
Expand All @@ -102,18 +106,17 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) {
*
* @param claimGroup the CCW {@link CarrierClaim} to transform
* @param includeTaxNumbers whether to include tax numbers in the response
* @param securityTag securityTag of the claim
* @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link
* CarrierClaim}
*/
private ExplanationOfBenefit transformClaim(CarrierClaim claimGroup, boolean includeTaxNumbers) {
private ExplanationOfBenefit transformClaim(
CarrierClaim claimGroup, boolean includeTaxNumbers, String securityTag) {
ExplanationOfBenefit eob = new ExplanationOfBenefit();

// Required values not directly mapped
eob.getMeta().addProfile(Profile.C4BB.getVersionedEobNonclinicianUrl());

String securityTag =
lookUpSamhsaSecurityTags.getClaimSecurityLevel(
String.valueOf(claimGroup.getClaimId()), CarrierTag.class);
eob.getMeta()
.addSecurity()
.setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ final class DMEClaimTransformerV2 implements ClaimTransformerInterfaceV2 {
this.metricRegistry = requireNonNull(metricRegistry);
this.drugCodeDisplayLookup = requireNonNull(drugCodeDisplayLookup);
this.npiOrgLookup = npiOrgLookup;
this.lookUpSamhsaSecurityTags = lookUpSamhsaSecurityTags;
this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags);
}

/**
Expand All @@ -91,7 +91,11 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) {
}
ExplanationOfBenefit eob;
try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) {
eob = transformClaim((DMEClaim) claim, includeTaxNumber);
DMEClaim dmeClaim = (DMEClaim) claim;
String securityTag =
lookUpSamhsaSecurityTags.getClaimSecurityLevel(
String.valueOf(dmeClaim.getClaimId()), DmeTag.class);
eob = transformClaim(dmeClaim, includeTaxNumber, securityTag);
}
return eob;
}
Expand All @@ -101,18 +105,17 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) {
*
* @param includeTaxNumbers whether to include tax numbers in the transformed EOB
* @param claimGroup the CCW {@link DMEClaim} to transform
* @param securityTag securityTag of the claim
* @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link
* DMEClaim}
*/
private ExplanationOfBenefit transformClaim(DMEClaim claimGroup, boolean includeTaxNumbers) {
private ExplanationOfBenefit transformClaim(
DMEClaim claimGroup, boolean includeTaxNumbers, String securityTag) {
ExplanationOfBenefit eob = new ExplanationOfBenefit();

// Required values not directly mapped
eob.getMeta().addProfile(Profile.C4BB.getVersionedEobInpatientUrl());

String securityTag =
lookUpSamhsaSecurityTags.getClaimSecurityLevel(
String.valueOf(claimGroup.getClaimId()), DmeTag.class);
eob.getMeta()
.addSecurity()
.setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,11 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) {
}
ExplanationOfBenefit eob;
try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) {
eob = transformClaim((HHAClaim) claim);
HHAClaim hhaClaim = (HHAClaim) claim;
String securityTag =
lookUpSamhsaSecurityTags.getClaimSecurityLevel(
String.valueOf(hhaClaim.getClaimId()), HhaTag.class);
eob = transformClaim(hhaClaim, securityTag);
}
return eob;
}
Expand All @@ -89,18 +93,15 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) {
* Transforms a specified {@link HHAClaim} into a FHIR {@link ExplanationOfBenefit}.
*
* @param claimGroup the CCW {@link HHAClaim} to transform
* @param securityTag securityTag of the claim
* @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link
* HHAClaim}
*/
private ExplanationOfBenefit transformClaim(HHAClaim claimGroup) {
private ExplanationOfBenefit transformClaim(HHAClaim claimGroup, String securityTag) {
ExplanationOfBenefit eob = new ExplanationOfBenefit();

// Required values not directly mapped
eob.getMeta().addProfile(Profile.C4BB.getVersionedEobNonclinicianUrl());

String securityTag =
lookUpSamhsaSecurityTags.getClaimSecurityLevel(
String.valueOf(claimGroup.getClaimId()), HhaTag.class);
eob.getMeta()
.addSecurity()
.setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,11 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) {
}
ExplanationOfBenefit eob;
try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) {
eob = transformClaim((HospiceClaim) claim);
HospiceClaim hospiceClaim = (HospiceClaim) claim;
String securityTag =
lookUpSamhsaSecurityTags.getClaimSecurityLevel(
String.valueOf(hospiceClaim.getClaimId()), HospiceTag.class);
eob = transformClaim(hospiceClaim, securityTag);
}
return eob;
}
Expand All @@ -91,18 +95,15 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) {
* Transforms a specified {@link HospiceClaim} into a FHIR {@link ExplanationOfBenefit}.
*
* @param claimGroup the CCW {@link HospiceClaim} to transform
* @param securityTag securityTag of the claim
* @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link
* HospiceClaim}
*/
private ExplanationOfBenefit transformClaim(HospiceClaim claimGroup) {
private ExplanationOfBenefit transformClaim(HospiceClaim claimGroup, String securityTag) {
ExplanationOfBenefit eob = new ExplanationOfBenefit();

// Required values not directly mapped
eob.getMeta().addProfile(Profile.C4BB.getVersionedEobInpatientUrl());

String securityTag =
lookUpSamhsaSecurityTags.getClaimSecurityLevel(
String.valueOf(claimGroup.getClaimId()), HospiceTag.class);
eob.getMeta()
.addSecurity()
.setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public InpatientClaimTransformerV2(
LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) {
this.metricRegistry = requireNonNull(metricRegistry);
this.npiOrgLookup = requireNonNull(npiOrgLookup);
this.lookUpSamhsaSecurityTags = lookUpSamhsaSecurityTags;
this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags);
}

/**
Expand All @@ -85,7 +85,11 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) {
}
ExplanationOfBenefit eob;
try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) {
eob = transformClaim((InpatientClaim) claim);
InpatientClaim inpatientClaim = (InpatientClaim) claim;
String securityTag =
lookUpSamhsaSecurityTags.getClaimSecurityLevel(
String.valueOf(inpatientClaim.getClaimId()), InpatientTag.class);
eob = transformClaim(inpatientClaim, securityTag);
}
return eob;
}
Expand All @@ -94,18 +98,15 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) {
* Transforms a specified {@link InpatientClaim} into a FHIR {@link ExplanationOfBenefit}.
*
* @param claimGroup the CCW {@link InpatientClaim} to transform
* @param securityTag securityTag of the claim
* @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link
* InpatientClaim}
*/
private ExplanationOfBenefit transformClaim(InpatientClaim claimGroup) {
private ExplanationOfBenefit transformClaim(InpatientClaim claimGroup, String securityTag) {
ExplanationOfBenefit eob = new ExplanationOfBenefit();

// Required values not directly mapped
eob.getMeta().addProfile(Profile.C4BB.getVersionedEobInpatientUrl());

String securityTag =
lookUpSamhsaSecurityTags.getClaimSecurityLevel(
String.valueOf(claimGroup.getClaimId()), InpatientTag.class);
eob.getMeta()
.addSecurity()
.setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,12 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) {
}
ExplanationOfBenefit eob;
try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) {
eob = transformClaim((OutpatientClaim) claim);

OutpatientClaim outpatientClaim = (OutpatientClaim) claim;
String securityTag =
lookUpSamhsaSecurityTags.getClaimSecurityLevel(
String.valueOf(outpatientClaim.getClaimId()), OutpatientTag.class);
eob = transformClaim(outpatientClaim, securityTag);
}
return eob;
}
Expand All @@ -101,18 +106,15 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) {
* Transforms a specified {@link InpatientClaim} into a FHIR {@link ExplanationOfBenefit}.
*
* @param claimGroup the CCW {@link InpatientClaim} to transform
* @param securityTag securityTag of the claim
* @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link
* OutpatientClaim}
*/
private ExplanationOfBenefit transformClaim(OutpatientClaim claimGroup) {
private ExplanationOfBenefit transformClaim(OutpatientClaim claimGroup, String securityTag) {
ExplanationOfBenefit eob = new ExplanationOfBenefit();

// Required values not directly mapped
eob.getMeta().addProfile(Profile.C4BB.getVersionedEobOutpatientUrl());

String securityTag =
lookUpSamhsaSecurityTags.getClaimSecurityLevel(
String.valueOf(claimGroup.getClaimId()), OutpatientTag.class);
eob.getMeta()
.addSecurity()
.setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,11 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) {
}
ExplanationOfBenefit eob;
try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) {
eob = transformClaim((SNFClaim) claim);
SNFClaim snfClaim = (SNFClaim) claim;
String securityTag =
lookUpSamhsaSecurityTags.getClaimSecurityLevel(
String.valueOf(snfClaim.getClaimId()), SnfTag.class);
eob = transformClaim(snfClaim, securityTag);
}
return eob;
}
Expand All @@ -93,18 +97,15 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) {
* Transforms a specified {@link SNFClaim} into a FHIR {@link ExplanationOfBenefit}.
*
* @param claimGroup the CCW {@link SNFClaim} to transform
* @param securityTag securityTag of the claim
* @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link
* SNFClaim}
*/
private ExplanationOfBenefit transformClaim(SNFClaim claimGroup) {
private ExplanationOfBenefit transformClaim(SNFClaim claimGroup, String securityTag) {
ExplanationOfBenefit eob = new ExplanationOfBenefit();

// Required values not directly mapped
eob.getMeta().addProfile(Profile.C4BB.getVersionedEobInpatientUrl());

String securityTag =
lookUpSamhsaSecurityTags.getClaimSecurityLevel(
String.valueOf(claimGroup.getClaimId()), SnfTag.class);
eob.getMeta()
.addSecurity()
.setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,18 +93,22 @@ public ClaimResponse transform(Object claimEntity, boolean includeTaxNumbers) {
}

try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) {
return transformClaim((RdaFissClaim) claimEntity);
RdaFissClaim rdaFissClaim = (RdaFissClaim) claimEntity;
String securityTag =
lookUpSamhsaSecurityTags.getClaimSecurityLevel(rdaFissClaim.getClaimId(), FissTag.class);
return transformClaim(rdaFissClaim, securityTag);
}
}

/**
* Transforms an {@link RdaFissClaim} to a FHIR {@link ClaimResponse}.
*
* @param claimGroup the {@link RdaFissClaim} to transform
* @param securityTag securityTag of the claim
* @return a FHIR {@link ClaimResponse} resource that represents the specified {@link
* RdaFissClaim}
*/
private ClaimResponse transformClaim(RdaFissClaim claimGroup) {
private ClaimResponse transformClaim(RdaFissClaim claimGroup, String securityTag) {
ClaimResponse claim = new ClaimResponse();

claim.setId("f-" + claimGroup.getClaimId());
Expand All @@ -120,10 +124,6 @@ private ClaimResponse transformClaim(RdaFissClaim claimGroup) {
claim.setRequest(new Reference(String.format("Claim/f-%s", claimGroup.getClaimId())));
claim.setItem(getClaimItems(claimGroup));

// claim.getType(), claim.getIdElement().getIdPart()
String securityTag =
lookUpSamhsaSecurityTags.getClaimSecurityLevel(claim.getId(), FissTag.class);

List<Coding> securityTags = new ArrayList<>();

// Create a Coding object for the security level
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ public class FissClaimTransformerV2 extends AbstractTransformerV2
public FissClaimTransformerV2(
MetricRegistry metricRegistry, LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) {
this.metricRegistry = requireNonNull(metricRegistry);
this.lookUpSamhsaSecurityTags = lookUpSamhsaSecurityTags;
this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags);
}

/**
Expand All @@ -102,7 +102,10 @@ public Claim transform(Object claimEntity, boolean includeTaxNumbers) {
}

try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) {
return transformClaim((RdaFissClaim) claimEntity, includeTaxNumbers);
RdaFissClaim rdaFissClaim = (RdaFissClaim) claimEntity;
String securityTag =
lookUpSamhsaSecurityTags.getClaimSecurityLevel(rdaFissClaim.getClaimId(), FissTag.class);
return transformClaim(rdaFissClaim, includeTaxNumbers, securityTag);
}
}

Expand All @@ -111,9 +114,11 @@ public Claim transform(Object claimEntity, boolean includeTaxNumbers) {
*
* @param claimGroup the {@link RdaFissClaim} to transform
* @param includeTaxNumbers Indicates if tax numbers should be included in the results
* @param securityTag securityTag of the claim
* @return a FHIR {@link Claim} resource that represents the specified {@link RdaFissClaim}
*/
private Claim transformClaim(RdaFissClaim claimGroup, boolean includeTaxNumbers) {
private Claim transformClaim(
RdaFissClaim claimGroup, boolean includeTaxNumbers, String securityTag) {
Claim claim = new Claim();

boolean isIcd9 =
Expand Down Expand Up @@ -144,9 +149,6 @@ private Claim transformClaim(RdaFissClaim claimGroup, boolean includeTaxNumbers)
claim.setInsurance(getInsurance(claimGroup));
claim.setItem(getClaimItems(claimGroup));

String securityTag =
lookUpSamhsaSecurityTags.getClaimSecurityLevel(claim.getId(), FissTag.class);

List<Coding> securityTags = new ArrayList<>();

// Create a Coding object for the security level
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,17 +108,22 @@ public ClaimResponse transform(Object claimEntity, boolean includeTaxNumbers) {
}

try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) {
return transformClaim((RdaMcsClaim) claimEntity);
RdaMcsClaim rdaMcsClaim = (RdaMcsClaim) claimEntity;
String securityTag =
lookUpSamhsaSecurityTags.getClaimSecurityLevel(
rdaMcsClaim.getIdrClmHdIcn(), McsTag.class);
return transformClaim(rdaMcsClaim, securityTag);
}
}

/**
* Transforms a {@link RdaMcsClaim} into a FHIR {@link Claim}.
*
* @param claimGroup the {@link RdaMcsClaim} to transform
* @param securityTag securityTag of the claim
* @return a FHIR {@link ClaimResponse} resource that represents the specified {@link RdaMcsClaim}
*/
private ClaimResponse transformClaim(RdaMcsClaim claimGroup) {
private ClaimResponse transformClaim(RdaMcsClaim claimGroup, String securityTag) {
ClaimResponse claim = new ClaimResponse();

claim.setId("m-" + claimGroup.getIdrClmHdIcn());
Expand All @@ -135,11 +140,7 @@ private ClaimResponse transformClaim(RdaMcsClaim claimGroup) {
claim.setPatient(new Reference("#patient"));
claim.setRequest(new Reference(String.format("Claim/m-%s", claimGroup.getIdrClmHdIcn())));

String securityTag =
lookUpSamhsaSecurityTags.getClaimSecurityLevel(claim.getId(), McsTag.class);

List<Coding> securityTags = new ArrayList<>();

// Create a Coding object for the security level
Coding securityTagCoding =
new Coding()
Expand Down
Loading

0 comments on commit 46093ca

Please sign in to comment.