From ec140713143ac56e6dec784ce902f73717c94660 Mon Sep 17 00:00:00 2001 From: MahiFentaye <168698136+MahiFentaye@users.noreply.github.com> Date: Thu, 12 Dec 2024 11:31:32 -0500 Subject: [PATCH 01/13] BFD-3665 BFD-3665 getting security tags for claim adding to the response claim, claimResponse, EOB V1 --- .../war/commons/LookUpSamhsaSecurityTags.java | 193 ++++++++++++++++++ .../providers/CarrierClaimTransformerV2.java | 15 ++ .../r4/providers/DMEClaimTransformerV2.java | 15 ++ .../r4/providers/HHAClaimTransformerV2.java | 14 ++ .../providers/HospiceClaimTransformerV2.java | 14 ++ .../InpatientClaimTransformerV2.java | 15 ++ .../OutpatientClaimTransformerV2.java | 15 ++ .../r4/providers/SNFClaimTransformerV2.java | 15 ++ .../pac/FissClaimResponseTransformerV2.java | 25 ++- .../providers/pac/FissClaimTransformerV2.java | 25 ++- .../pac/McsClaimResponseTransformerV2.java | 25 ++- .../providers/pac/McsClaimTransformerV2.java | 26 ++- 12 files changed, 393 insertions(+), 4 deletions(-) create mode 100644 apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/LookUpSamhsaSecurityTags.java diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/LookUpSamhsaSecurityTags.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/LookUpSamhsaSecurityTags.java new file mode 100644 index 0000000000..598e2817f3 --- /dev/null +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/LookUpSamhsaSecurityTags.java @@ -0,0 +1,193 @@ +package gov.cms.bfd.server.war.commons; + +import gov.cms.bfd.model.rda.samhsa.FissTag; +import gov.cms.bfd.model.rda.samhsa.McsTag; +import gov.cms.bfd.model.rif.samhsa.CarrierTag; +import gov.cms.bfd.model.rif.samhsa.DmeTag; +import gov.cms.bfd.model.rif.samhsa.HhaTag; +import gov.cms.bfd.model.rif.samhsa.HospiceTag; +import gov.cms.bfd.model.rif.samhsa.InpatientTag; +import gov.cms.bfd.model.rif.samhsa.OutpatientTag; +import gov.cms.bfd.model.rif.samhsa.SnfTag; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; +import jakarta.persistence.Query; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.hl7.fhir.r4.model.CodeableConcept; +import org.springframework.stereotype.Service; + +/** Find security level. */ +@Service +public final class LookUpSamhsaSecurityTags { + + /** The Entity manager. */ + private EntityManager entityManager; + + /** + * Sets the {@link #entityManager}. + * + * @param entityManager a JPA {@link EntityManager} connected to the application's database + */ + @PersistenceContext + public void setEntityManager(EntityManager entityManager) { + this.entityManager = entityManager; + } + + /** + * Method to find the security level of a given claim ID. + * + * @param type holds Claim + * @param claimId holds Claim + * @return SecurityLevel + */ + public String getClaimSecurityLevel(CodeableConcept type, String claimId) { + // Identify the claim type (e.g., Inpatient, Outpatient, Carrier, etc.) + + // claimId = claim.getIdElement().getIdPart() + // CodeableConcept type, claimId + + // CodeableConcept type = claim.getType(); + String claimType = getClaimType(type); + + Set securityTags = new HashSet<>(); + + // Query tags based on the claim type + switch (claimType) { + case "Inpatient": + securityTags.addAll(queryTagsForClaim(claimId, InpatientTag.class)); + break; + case "Outpatient": + securityTags.addAll(queryTagsForClaim(claimId, OutpatientTag.class)); + break; + case "Carrier": + securityTags.addAll(queryTagsForClaim(claimId, CarrierTag.class)); + break; + case "DME": + securityTags.addAll(queryTagsForClaim(claimId, DmeTag.class)); + break; + case "HHA": + securityTags.addAll(queryTagsForClaim(claimId, HhaTag.class)); + break; + case "Hospice": + securityTags.addAll(queryTagsForClaim(claimId, HospiceTag.class)); + break; + case "SNF": + securityTags.addAll(queryTagsForClaim(claimId, SnfTag.class)); + break; + case "FISS": + securityTags.addAll(queryTagsForClaim(claimId, FissTag.class)); + break; + case "MCS": + securityTags.addAll(queryTagsForClaim(claimId, McsTag.class)); + break; + default: + // No tags for unrecognized claim type + break; + } + + // Determine the security level based on the collected tags + return determineSecurityLevel(securityTags); + } + + /** + * Helper method to get the claim type from the FHIR Claim resource. + * + * @param type the FHIR Claim resource + * @return the claim type (e.g., "Inpatient", "Outpatient", etc.) + */ + private String getClaimType(CodeableConcept type) { + // Retrieve the claim type from the Claim resource + // CodeableConcept type = claim.getType(); + if (type != null && type.hasCoding()) { + + String code = type.getCodingFirstRep().getCode(); + switch (code) { + case "INP": + return "Inpatient"; + case "OUT": + return "Outpatient"; + case "CAR": + return "Carrier"; + case "DME": + return "DME"; + case "HHA": + return "HHA"; + case "HOS": + return "Hospice"; + case "SNF": + return "SNF"; + case "FISS": + return "FISS"; + case "MCS": + return "MCS"; + default: + return "Unknown"; + } + } + return "Unknown"; // Return "Unknown" if type is not set + } + + /** + * Helper method to query tags for a specific claim from a specific table. + * + * @param claimId the name of the variable + * @param tagClass the name of the tag class + * @return queryTagsForClaim + */ + private Set queryTagsForClaim(String claimId, Class tagClass) { + Set tagCodes = new HashSet<>(); + + String sql; + if (FissTag.class.equals(tagClass) || McsTag.class.equals(tagClass)) { + // For FissTag and McsTag, claimId is a String + sql = "SELECT t.code FROM " + tagClass.getSimpleName() + " t WHERE t.claim = :claim"; + } else { + // For other tags (CarrierTag, DmeTag, etc.), claimId is a Long + sql = "SELECT t.code FROM " + tagClass.getSimpleName() + " t WHERE t.claim = :claim"; + } + + Query query = entityManager.createQuery(sql); + query.setParameter("claim", claimId); + + @SuppressWarnings("unchecked") + List resultList = query.getResultList(); + + // Use a parameterized constructor to initialize the Set with the List + tagCodes = new HashSet<>(resultList); + return tagCodes; + } + + /** + * Helper method to determine the security level based on the collected tags. + * + * @param securityTags value of securityTags + * @return SecurityLevel + */ + private String determineSecurityLevel(Set securityTags) { + // Define the rules for security levels based on tag codes + for (String tag : securityTags) { + if ("R".equals(tag) || "42CFRPart2".equals(tag)) { + return "Restricted"; // Sensitive data + } + } + + // Default to 'Normal' if no sensitive tags are found + return "Normal"; + } + + /** + * Helper method to determine the security level based on the collected tags. + * + * @param claimId value of claimId + * @param tagClass value of tagClass + * @return SecurityLevel + */ + public String getClaimSecurityLevel(String claimId, Class tagClass) { + + return determineSecurityLevel(queryTagsForClaim(claimId, tagClass)); + // return queryTagsForClaim(claimId, tagClass); + + } +} diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java index 18aabb3d6c..592c866c4f 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java @@ -10,9 +10,11 @@ import gov.cms.bfd.model.codebook.data.CcwCodebookVariable; import gov.cms.bfd.model.rif.entities.CarrierClaim; import gov.cms.bfd.model.rif.entities.CarrierClaimLine; +import gov.cms.bfd.model.rif.samhsa.CarrierTag; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.Diagnosis; import gov.cms.bfd.server.war.commons.Diagnosis.DiagnosisLabel; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; import gov.cms.bfd.server.war.commons.carin.C4BBAdjudication; @@ -27,6 +29,7 @@ import org.hl7.fhir.r4.model.ExplanationOfBenefit.CareTeamComponent; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.r4.model.Reference; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -48,6 +51,9 @@ final class CarrierClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(CarrierClaimTransformerV2.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -102,6 +108,15 @@ private ExplanationOfBenefit transformClaim(CarrierClaim claimGroup, boolean inc // 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") + .setCode(securityTag) + .setDisplay(securityTag); + // TODO: ExplanationOfBenefit.outcome is a required field. Needs to be mapped. // eob.setOutcome(?) diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java index df02d767f5..fd05e60ab3 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java @@ -10,9 +10,11 @@ import gov.cms.bfd.model.codebook.data.CcwCodebookVariable; import gov.cms.bfd.model.rif.entities.DMEClaim; import gov.cms.bfd.model.rif.entities.DMEClaimLine; +import gov.cms.bfd.model.rif.samhsa.DmeTag; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.Diagnosis; import gov.cms.bfd.server.war.commons.Diagnosis.DiagnosisLabel; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; import gov.cms.bfd.server.war.commons.carin.C4BBAdjudication; @@ -27,6 +29,7 @@ import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.r4.model.Extension; import org.hl7.fhir.r4.model.Quantity; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms CCW {@link DMEClaim} instances into FHIR {@link ExplanationOfBenefit} resources. */ @@ -46,6 +49,9 @@ final class DMEClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(DMEClaimTransformerV2.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -101,6 +107,15 @@ private ExplanationOfBenefit transformClaim(DMEClaim claimGroup, boolean include // 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") + .setCode(securityTag) + .setDisplay(securityTag); + // Common group level fields between all claim types // Claim Type + Claim ID => ExplanationOfBenefit.id // CLM_ID => ExplanationOfBenefit.identifier diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java index 42da112fad..8a725cfe82 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java @@ -9,8 +9,10 @@ import gov.cms.bfd.model.codebook.data.CcwCodebookVariable; import gov.cms.bfd.model.rif.entities.HHAClaim; import gov.cms.bfd.model.rif.entities.HHAClaimLine; +import gov.cms.bfd.model.rif.samhsa.HhaTag; import gov.cms.bfd.server.war.commons.C4BBInstutionalClaimSubtypes; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; import gov.cms.bfd.server.war.commons.carin.C4BBClaimProfessionalAndNonClinicianCareTeamRole; @@ -23,6 +25,7 @@ import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.r4.model.Quantity; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms CCW {@link HHAClaim} instances into FHIR {@link ExplanationOfBenefit} resources. */ @@ -39,6 +42,9 @@ final class HHAClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(HHAClaimTransformerV2.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -87,6 +93,14 @@ private ExplanationOfBenefit transformClaim(HHAClaim claimGroup) { // 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") + .setCode(securityTag) + .setDisplay(securityTag); // Common group level fields between all claim types // Claim Type + Claim ID => ExplanationOfBenefit.id // CLM_ID => ExplanationOfBenefit.identifier diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java index e804570141..810e3efee2 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java @@ -9,8 +9,10 @@ import gov.cms.bfd.model.codebook.data.CcwCodebookVariable; import gov.cms.bfd.model.rif.entities.HospiceClaim; import gov.cms.bfd.model.rif.entities.HospiceClaimLine; +import gov.cms.bfd.model.rif.samhsa.HospiceTag; import gov.cms.bfd.server.war.commons.C4BBInstutionalClaimSubtypes; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; import gov.cms.bfd.server.war.commons.carin.C4BBAdjudication; @@ -23,6 +25,7 @@ import java.util.Optional; import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -41,6 +44,9 @@ final class HospiceClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(HospiceClaimTransformerV2.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -89,6 +95,14 @@ private ExplanationOfBenefit transformClaim(HospiceClaim claimGroup) { // 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") + .setCode(securityTag) + .setDisplay(securityTag); // Common group level fields between all claim types // Claim Type + Claim ID => ExplanationOfBenefit.id // CLM_ID => ExplanationOfBenefit.identifier diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java index e188bf36dd..89e9924a15 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java @@ -9,9 +9,11 @@ import gov.cms.bfd.model.codebook.data.CcwCodebookVariable; import gov.cms.bfd.model.rif.entities.InpatientClaim; import gov.cms.bfd.model.rif.entities.InpatientClaimLine; +import gov.cms.bfd.model.rif.samhsa.InpatientTag; import gov.cms.bfd.server.war.commons.C4BBInstutionalClaimSubtypes; import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; import gov.cms.bfd.server.war.commons.TransformerConstants; @@ -25,6 +27,7 @@ import org.hl7.fhir.r4.model.Coding; import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -43,6 +46,9 @@ final class InpatientClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(InpatientClaimTransformerV2.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -92,6 +98,15 @@ private ExplanationOfBenefit transformClaim(InpatientClaim claimGroup) { // 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") + .setCode(securityTag) + .setDisplay(securityTag); + // Common group level fields between all claim types // Claim Type + Claim ID => ExplanationOfBenefit.id // CLM_ID => ExplanationOfBenefit.identifier diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java index db8b2a9303..b4ef39cb04 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java @@ -11,8 +11,10 @@ import gov.cms.bfd.model.rif.entities.InpatientClaim; import gov.cms.bfd.model.rif.entities.OutpatientClaim; import gov.cms.bfd.model.rif.entities.OutpatientClaimLine; +import gov.cms.bfd.model.rif.samhsa.OutpatientTag; import gov.cms.bfd.server.war.commons.C4BBInstutionalClaimSubtypes; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; import gov.cms.bfd.server.war.commons.carin.C4BBAdjudication; @@ -25,6 +27,7 @@ import java.util.Optional; import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -47,6 +50,9 @@ final class OutpatientClaimTransformerV2 implements ClaimTransformerInterfaceV2 private static final String METRIC_NAME = MetricRegistry.name(OutpatientClaimTransformerV2.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -101,6 +107,15 @@ private ExplanationOfBenefit transformClaim(OutpatientClaim claimGroup) { // 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") + .setCode(securityTag) + .setDisplay(securityTag); + // Common group level fields between all claim types // Claim Type + Claim ID => ExplanationOfBenefit.id // CLM_ID => ExplanationOfBenefit.identifier diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java index e15f9830a2..760f541e8c 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java @@ -10,9 +10,11 @@ import gov.cms.bfd.model.codebook.data.CcwCodebookVariable; import gov.cms.bfd.model.rif.entities.SNFClaim; import gov.cms.bfd.model.rif.entities.SNFClaimLine; +import gov.cms.bfd.model.rif.samhsa.SnfTag; import gov.cms.bfd.server.war.commons.C4BBInstutionalClaimSubtypes; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.CommonTransformerUtils; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; import gov.cms.bfd.server.war.commons.carin.C4BBClaimInstitutionalCareTeamRole; @@ -26,6 +28,7 @@ import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.r4.model.Period; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms CCW {@link SNFClaim} instances into FHIR {@link ExplanationOfBenefit} resources. */ @@ -42,6 +45,9 @@ public class SNFClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(SNFClaimTransformerV2.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -91,6 +97,15 @@ private ExplanationOfBenefit transformClaim(SNFClaim claimGroup) { // 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") + .setCode(securityTag) + .setDisplay(securityTag); + // Common group level fields between all claim types // Claim Type + Claim ID => ExplanationOfBenefit.id // CLM_ID => ExplanationOfBenefit.identifier diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java index 8133343d6b..0affcde39b 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java @@ -8,6 +8,7 @@ import gov.cms.bfd.model.rda.entities.RdaFissClaim; import gov.cms.bfd.model.rda.entities.RdaFissRevenueLine; import gov.cms.bfd.server.war.commons.BBCodingSystems; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.carin.C4BBAdjudicationDiscriminator; import gov.cms.bfd.server.war.r4.providers.pac.common.AbstractTransformerV2; import gov.cms.bfd.server.war.r4.providers.pac.common.FissTransformerV2; @@ -27,6 +28,7 @@ import org.hl7.fhir.r4.model.Meta; import org.hl7.fhir.r4.model.Reference; import org.hl7.fhir.r4.model.codesystems.ClaimType; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms FISS/MCS instances into FHIR {@link ClaimResponse} resources. */ @@ -41,6 +43,9 @@ public class FissClaimResponseTransformerV2 extends AbstractTransformerV2 private static final String METRIC_NAME = MetricRegistry.name(FissClaimResponseTransformerV2.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * The known FISS status codes and their associated {@link ClaimResponse.RemittanceOutcome} * mappings. @@ -114,7 +119,25 @@ private ClaimResponse transformClaim(RdaFissClaim claimGroup) { claim.setRequest(new Reference(String.format("Claim/f-%s", claimGroup.getClaimId()))); claim.setItem(getClaimItems(claimGroup)); - claim.setMeta(new Meta().setLastUpdated(Date.from(claimGroup.getLastUpdated()))); + // claim.getType(), claim.getIdElement().getIdPart() + String securityTag = + lookUpSamhsaSecurityTags.getClaimSecurityLevel(claim.getType(), claim.getIdPart()); + + // Create a list of Coding objects to match the required type + List securityTags = new ArrayList<>(); + + // Create a Coding object for the security level + Coding securityTagCoding = + new Coding() + .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") + .setCode(securityTag) + .setDisplay(securityTag); + + // Add the Coding to the list + securityTags.add(securityTagCoding); + Meta meta = new Meta(); + claim.setMeta(meta.setSecurity(securityTags)); + claim.setMeta(meta.setLastUpdated(Date.from(claimGroup.getLastUpdated()))); claim.setCreated(new Date()); return claim; diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java index ed25704d30..026b23807e 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java @@ -14,6 +14,7 @@ import gov.cms.bfd.server.war.commons.BBCodingSystems; import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.IcdCode; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.commons.carin.C4BBOrganizationIdentifierType; import gov.cms.bfd.server.war.commons.carin.C4BBSupportingInfoType; @@ -45,6 +46,7 @@ import org.hl7.fhir.r4.model.codesystems.ClaimType; import org.hl7.fhir.r4.model.codesystems.ExDiagnosistype; import org.hl7.fhir.r4.model.codesystems.ProcessPriority; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms FISS/MCS instances into FHIR {@link Claim} resources. */ @@ -62,6 +64,9 @@ public class FissClaimTransformerV2 extends AbstractTransformerV2 /** The Metric registry. */ private final MetricRegistry metricRegistry; + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The METRIC_NAME constant. */ private static final String METRIC_NAME = MetricRegistry.name(FissClaimTransformerV2.class.getSimpleName(), "transform"); @@ -135,7 +140,25 @@ private Claim transformClaim(RdaFissClaim claimGroup, boolean includeTaxNumbers) claim.setInsurance(getInsurance(claimGroup)); claim.setItem(getClaimItems(claimGroup)); - claim.setMeta(new Meta().setLastUpdated(Date.from(claimGroup.getLastUpdated()))); + String securityTag = + lookUpSamhsaSecurityTags.getClaimSecurityLevel( + claim.getType(), claim.getIdElement().getIdPart()); + + // Create a list of Coding objects to match the required type + List securityTags = new ArrayList<>(); + + // Create a Coding object for the security level + Coding securityTagCoding = + new Coding() + .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") + .setCode(securityTag) + .setDisplay(securityTag); + + // Add the Coding to the list + securityTags.add(securityTagCoding); + Meta meta = new Meta(); + claim.setMeta(meta.setSecurity(securityTags)); + claim.setMeta(meta.setLastUpdated(Date.from(claimGroup.getLastUpdated()))); claim.setCreated(new Date()); return claim; diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java index f952c18494..9620f36995 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java @@ -6,6 +6,7 @@ import com.newrelic.api.agent.Trace; import gov.cms.bfd.model.rda.entities.RdaMcsClaim; import gov.cms.bfd.server.war.commons.BBCodingSystems; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.r4.providers.pac.common.AbstractTransformerV2; import gov.cms.bfd.server.war.r4.providers.pac.common.McsTransformerV2; import gov.cms.bfd.server.war.r4.providers.pac.common.ResourceTransformer; @@ -16,11 +17,13 @@ import java.util.Map; import org.hl7.fhir.r4.model.Claim; import org.hl7.fhir.r4.model.ClaimResponse; +import org.hl7.fhir.r4.model.Coding; import org.hl7.fhir.r4.model.Extension; import org.hl7.fhir.r4.model.Identifier; import org.hl7.fhir.r4.model.Meta; import org.hl7.fhir.r4.model.Reference; import org.hl7.fhir.r4.model.codesystems.ClaimType; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms FISS/MCS instances into FHIR {@link ClaimResponse} resources. */ @@ -35,6 +38,9 @@ public class McsClaimResponseTransformerV2 extends AbstractTransformerV2 private static final String METRIC_NAME = MetricRegistry.name(McsClaimResponseTransformerV2.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * There are only 2 statuses currently being used, and only the ones listed below are mapped to * "CANCELLED". For brevity, the rest are defaulted to "ACTIVE" using {@link @@ -128,7 +134,24 @@ private ClaimResponse transformClaim(RdaMcsClaim claimGroup) { claim.setPatient(new Reference("#patient")); claim.setRequest(new Reference(String.format("Claim/m-%s", claimGroup.getIdrClmHdIcn()))); - claim.setMeta(new Meta().setLastUpdated(Date.from(claimGroup.getLastUpdated()))); + String securityTag = + lookUpSamhsaSecurityTags.getClaimSecurityLevel(claim.getType(), claim.getIdPart()); + + // Create a list of Coding objects to match the required type + List securityTags = new ArrayList<>(); + + // Create a Coding object for the security level + Coding securityTagCoding = + new Coding() + .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") + .setCode(securityTag) + .setDisplay(securityTag); + + // Add the Coding to the list + securityTags.add(securityTagCoding); + Meta meta = new Meta(); + claim.setMeta(meta.setSecurity(securityTags)); + claim.setMeta(meta.setLastUpdated(Date.from(claimGroup.getLastUpdated()))); claim.setCreated(new Date()); return claim; diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java index 3a42d2cef3..52f7749230 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java @@ -8,6 +8,7 @@ import gov.cms.bfd.model.rda.entities.RdaMcsDiagnosisCode; import gov.cms.bfd.server.war.commons.BBCodingSystems; import gov.cms.bfd.server.war.commons.IcdCode; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.r4.providers.pac.common.AbstractTransformerV2; import gov.cms.bfd.server.war.r4.providers.pac.common.McsTransformerV2; @@ -36,6 +37,7 @@ import org.hl7.fhir.r4.model.Resource; import org.hl7.fhir.r4.model.codesystems.ClaimType; import org.hl7.fhir.r4.model.codesystems.ProcessPriority; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms FISS/MCS instances into FHIR {@link Claim} resources. */ @@ -44,6 +46,9 @@ public class McsClaimTransformerV2 extends AbstractTransformerV2 implements ResourceTransformer { + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The metric name. */ private static final String METRIC_NAME = MetricRegistry.name(McsClaimResponseTransformerV2.class.getSimpleName(), "transform"); @@ -129,7 +134,26 @@ private Claim transformClaim(RdaMcsClaim claimGroup, boolean includeTaxNumbers) claim.setItem(getItems(claimGroup)); claim.setCreated(new Date()); - claim.setMeta(new Meta().setLastUpdated(Date.from(claimGroup.getLastUpdated()))); + + String securityTag = + lookUpSamhsaSecurityTags.getClaimSecurityLevel( + claim.getType(), claim.getIdElement().getIdPart()); + + // Create a list of Coding objects to match the required type + List securityTags = new ArrayList<>(); + + // Create a Coding object for the security level + Coding securityTagCoding = + new Coding() + .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") + .setCode(securityTag) + .setDisplay(securityTag); + + // Add the Coding to the list + securityTags.add(securityTagCoding); + Meta meta = new Meta(); + claim.setMeta(meta.setSecurity(securityTags)); + claim.setMeta(meta.setLastUpdated(Date.from(claimGroup.getLastUpdated()))); return claim; } From e027fc1561e189f498e2effa1e7065fa22ca6344 Mon Sep 17 00:00:00 2001 From: MahiFentaye <168698136+MahiFentaye@users.noreply.github.com> Date: Thu, 12 Dec 2024 11:31:32 -0500 Subject: [PATCH 02/13] BFD-3665 BFD-3665 getting security tags for claim adding to the response claim, claimResponse, EOB V1 --- .../war/commons/LookUpSamhsaSecurityTags.java | 193 ++++++++++++++++++ .../providers/CarrierClaimTransformerV2.java | 15 ++ .../r4/providers/DMEClaimTransformerV2.java | 15 ++ .../r4/providers/HHAClaimTransformerV2.java | 14 ++ .../providers/HospiceClaimTransformerV2.java | 14 ++ .../InpatientClaimTransformerV2.java | 15 ++ .../OutpatientClaimTransformerV2.java | 15 ++ .../r4/providers/SNFClaimTransformerV2.java | 15 ++ .../pac/FissClaimResponseTransformerV2.java | 25 ++- .../providers/pac/FissClaimTransformerV2.java | 25 ++- .../pac/McsClaimResponseTransformerV2.java | 25 ++- .../providers/pac/McsClaimTransformerV2.java | 26 ++- .../providers/CarrierClaimTransformer.java | 16 ++ .../stu3/providers/DMEClaimTransformer.java | 18 ++ .../stu3/providers/HHAClaimTransformer.java | 18 ++ .../providers/HospiceClaimTransformer.java | 18 ++ .../providers/InpatientClaimTransformer.java | 18 ++ .../providers/OutpatientClaimTransformer.java | 18 ++ .../stu3/providers/SNFClaimTransformer.java | 18 ++ .../LookUpSamhsaSecurityTagsTest.java | 64 ++++++ 20 files changed, 581 insertions(+), 4 deletions(-) create mode 100644 apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/LookUpSamhsaSecurityTags.java create mode 100644 apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/LookUpSamhsaSecurityTagsTest.java diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/LookUpSamhsaSecurityTags.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/LookUpSamhsaSecurityTags.java new file mode 100644 index 0000000000..598e2817f3 --- /dev/null +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/LookUpSamhsaSecurityTags.java @@ -0,0 +1,193 @@ +package gov.cms.bfd.server.war.commons; + +import gov.cms.bfd.model.rda.samhsa.FissTag; +import gov.cms.bfd.model.rda.samhsa.McsTag; +import gov.cms.bfd.model.rif.samhsa.CarrierTag; +import gov.cms.bfd.model.rif.samhsa.DmeTag; +import gov.cms.bfd.model.rif.samhsa.HhaTag; +import gov.cms.bfd.model.rif.samhsa.HospiceTag; +import gov.cms.bfd.model.rif.samhsa.InpatientTag; +import gov.cms.bfd.model.rif.samhsa.OutpatientTag; +import gov.cms.bfd.model.rif.samhsa.SnfTag; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; +import jakarta.persistence.Query; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.hl7.fhir.r4.model.CodeableConcept; +import org.springframework.stereotype.Service; + +/** Find security level. */ +@Service +public final class LookUpSamhsaSecurityTags { + + /** The Entity manager. */ + private EntityManager entityManager; + + /** + * Sets the {@link #entityManager}. + * + * @param entityManager a JPA {@link EntityManager} connected to the application's database + */ + @PersistenceContext + public void setEntityManager(EntityManager entityManager) { + this.entityManager = entityManager; + } + + /** + * Method to find the security level of a given claim ID. + * + * @param type holds Claim + * @param claimId holds Claim + * @return SecurityLevel + */ + public String getClaimSecurityLevel(CodeableConcept type, String claimId) { + // Identify the claim type (e.g., Inpatient, Outpatient, Carrier, etc.) + + // claimId = claim.getIdElement().getIdPart() + // CodeableConcept type, claimId + + // CodeableConcept type = claim.getType(); + String claimType = getClaimType(type); + + Set securityTags = new HashSet<>(); + + // Query tags based on the claim type + switch (claimType) { + case "Inpatient": + securityTags.addAll(queryTagsForClaim(claimId, InpatientTag.class)); + break; + case "Outpatient": + securityTags.addAll(queryTagsForClaim(claimId, OutpatientTag.class)); + break; + case "Carrier": + securityTags.addAll(queryTagsForClaim(claimId, CarrierTag.class)); + break; + case "DME": + securityTags.addAll(queryTagsForClaim(claimId, DmeTag.class)); + break; + case "HHA": + securityTags.addAll(queryTagsForClaim(claimId, HhaTag.class)); + break; + case "Hospice": + securityTags.addAll(queryTagsForClaim(claimId, HospiceTag.class)); + break; + case "SNF": + securityTags.addAll(queryTagsForClaim(claimId, SnfTag.class)); + break; + case "FISS": + securityTags.addAll(queryTagsForClaim(claimId, FissTag.class)); + break; + case "MCS": + securityTags.addAll(queryTagsForClaim(claimId, McsTag.class)); + break; + default: + // No tags for unrecognized claim type + break; + } + + // Determine the security level based on the collected tags + return determineSecurityLevel(securityTags); + } + + /** + * Helper method to get the claim type from the FHIR Claim resource. + * + * @param type the FHIR Claim resource + * @return the claim type (e.g., "Inpatient", "Outpatient", etc.) + */ + private String getClaimType(CodeableConcept type) { + // Retrieve the claim type from the Claim resource + // CodeableConcept type = claim.getType(); + if (type != null && type.hasCoding()) { + + String code = type.getCodingFirstRep().getCode(); + switch (code) { + case "INP": + return "Inpatient"; + case "OUT": + return "Outpatient"; + case "CAR": + return "Carrier"; + case "DME": + return "DME"; + case "HHA": + return "HHA"; + case "HOS": + return "Hospice"; + case "SNF": + return "SNF"; + case "FISS": + return "FISS"; + case "MCS": + return "MCS"; + default: + return "Unknown"; + } + } + return "Unknown"; // Return "Unknown" if type is not set + } + + /** + * Helper method to query tags for a specific claim from a specific table. + * + * @param claimId the name of the variable + * @param tagClass the name of the tag class + * @return queryTagsForClaim + */ + private Set queryTagsForClaim(String claimId, Class tagClass) { + Set tagCodes = new HashSet<>(); + + String sql; + if (FissTag.class.equals(tagClass) || McsTag.class.equals(tagClass)) { + // For FissTag and McsTag, claimId is a String + sql = "SELECT t.code FROM " + tagClass.getSimpleName() + " t WHERE t.claim = :claim"; + } else { + // For other tags (CarrierTag, DmeTag, etc.), claimId is a Long + sql = "SELECT t.code FROM " + tagClass.getSimpleName() + " t WHERE t.claim = :claim"; + } + + Query query = entityManager.createQuery(sql); + query.setParameter("claim", claimId); + + @SuppressWarnings("unchecked") + List resultList = query.getResultList(); + + // Use a parameterized constructor to initialize the Set with the List + tagCodes = new HashSet<>(resultList); + return tagCodes; + } + + /** + * Helper method to determine the security level based on the collected tags. + * + * @param securityTags value of securityTags + * @return SecurityLevel + */ + private String determineSecurityLevel(Set securityTags) { + // Define the rules for security levels based on tag codes + for (String tag : securityTags) { + if ("R".equals(tag) || "42CFRPart2".equals(tag)) { + return "Restricted"; // Sensitive data + } + } + + // Default to 'Normal' if no sensitive tags are found + return "Normal"; + } + + /** + * Helper method to determine the security level based on the collected tags. + * + * @param claimId value of claimId + * @param tagClass value of tagClass + * @return SecurityLevel + */ + public String getClaimSecurityLevel(String claimId, Class tagClass) { + + return determineSecurityLevel(queryTagsForClaim(claimId, tagClass)); + // return queryTagsForClaim(claimId, tagClass); + + } +} diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java index 18aabb3d6c..592c866c4f 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java @@ -10,9 +10,11 @@ import gov.cms.bfd.model.codebook.data.CcwCodebookVariable; import gov.cms.bfd.model.rif.entities.CarrierClaim; import gov.cms.bfd.model.rif.entities.CarrierClaimLine; +import gov.cms.bfd.model.rif.samhsa.CarrierTag; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.Diagnosis; import gov.cms.bfd.server.war.commons.Diagnosis.DiagnosisLabel; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; import gov.cms.bfd.server.war.commons.carin.C4BBAdjudication; @@ -27,6 +29,7 @@ import org.hl7.fhir.r4.model.ExplanationOfBenefit.CareTeamComponent; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.r4.model.Reference; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -48,6 +51,9 @@ final class CarrierClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(CarrierClaimTransformerV2.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -102,6 +108,15 @@ private ExplanationOfBenefit transformClaim(CarrierClaim claimGroup, boolean inc // 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") + .setCode(securityTag) + .setDisplay(securityTag); + // TODO: ExplanationOfBenefit.outcome is a required field. Needs to be mapped. // eob.setOutcome(?) diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java index df02d767f5..fd05e60ab3 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java @@ -10,9 +10,11 @@ import gov.cms.bfd.model.codebook.data.CcwCodebookVariable; import gov.cms.bfd.model.rif.entities.DMEClaim; import gov.cms.bfd.model.rif.entities.DMEClaimLine; +import gov.cms.bfd.model.rif.samhsa.DmeTag; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.Diagnosis; import gov.cms.bfd.server.war.commons.Diagnosis.DiagnosisLabel; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; import gov.cms.bfd.server.war.commons.carin.C4BBAdjudication; @@ -27,6 +29,7 @@ import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.r4.model.Extension; import org.hl7.fhir.r4.model.Quantity; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms CCW {@link DMEClaim} instances into FHIR {@link ExplanationOfBenefit} resources. */ @@ -46,6 +49,9 @@ final class DMEClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(DMEClaimTransformerV2.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -101,6 +107,15 @@ private ExplanationOfBenefit transformClaim(DMEClaim claimGroup, boolean include // 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") + .setCode(securityTag) + .setDisplay(securityTag); + // Common group level fields between all claim types // Claim Type + Claim ID => ExplanationOfBenefit.id // CLM_ID => ExplanationOfBenefit.identifier diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java index 42da112fad..8a725cfe82 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java @@ -9,8 +9,10 @@ import gov.cms.bfd.model.codebook.data.CcwCodebookVariable; import gov.cms.bfd.model.rif.entities.HHAClaim; import gov.cms.bfd.model.rif.entities.HHAClaimLine; +import gov.cms.bfd.model.rif.samhsa.HhaTag; import gov.cms.bfd.server.war.commons.C4BBInstutionalClaimSubtypes; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; import gov.cms.bfd.server.war.commons.carin.C4BBClaimProfessionalAndNonClinicianCareTeamRole; @@ -23,6 +25,7 @@ import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.r4.model.Quantity; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms CCW {@link HHAClaim} instances into FHIR {@link ExplanationOfBenefit} resources. */ @@ -39,6 +42,9 @@ final class HHAClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(HHAClaimTransformerV2.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -87,6 +93,14 @@ private ExplanationOfBenefit transformClaim(HHAClaim claimGroup) { // 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") + .setCode(securityTag) + .setDisplay(securityTag); // Common group level fields between all claim types // Claim Type + Claim ID => ExplanationOfBenefit.id // CLM_ID => ExplanationOfBenefit.identifier diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java index e804570141..810e3efee2 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java @@ -9,8 +9,10 @@ import gov.cms.bfd.model.codebook.data.CcwCodebookVariable; import gov.cms.bfd.model.rif.entities.HospiceClaim; import gov.cms.bfd.model.rif.entities.HospiceClaimLine; +import gov.cms.bfd.model.rif.samhsa.HospiceTag; import gov.cms.bfd.server.war.commons.C4BBInstutionalClaimSubtypes; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; import gov.cms.bfd.server.war.commons.carin.C4BBAdjudication; @@ -23,6 +25,7 @@ import java.util.Optional; import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -41,6 +44,9 @@ final class HospiceClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(HospiceClaimTransformerV2.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -89,6 +95,14 @@ private ExplanationOfBenefit transformClaim(HospiceClaim claimGroup) { // 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") + .setCode(securityTag) + .setDisplay(securityTag); // Common group level fields between all claim types // Claim Type + Claim ID => ExplanationOfBenefit.id // CLM_ID => ExplanationOfBenefit.identifier diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java index e188bf36dd..89e9924a15 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java @@ -9,9 +9,11 @@ import gov.cms.bfd.model.codebook.data.CcwCodebookVariable; import gov.cms.bfd.model.rif.entities.InpatientClaim; import gov.cms.bfd.model.rif.entities.InpatientClaimLine; +import gov.cms.bfd.model.rif.samhsa.InpatientTag; import gov.cms.bfd.server.war.commons.C4BBInstutionalClaimSubtypes; import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; import gov.cms.bfd.server.war.commons.TransformerConstants; @@ -25,6 +27,7 @@ import org.hl7.fhir.r4.model.Coding; import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -43,6 +46,9 @@ final class InpatientClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(InpatientClaimTransformerV2.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -92,6 +98,15 @@ private ExplanationOfBenefit transformClaim(InpatientClaim claimGroup) { // 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") + .setCode(securityTag) + .setDisplay(securityTag); + // Common group level fields between all claim types // Claim Type + Claim ID => ExplanationOfBenefit.id // CLM_ID => ExplanationOfBenefit.identifier diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java index db8b2a9303..b4ef39cb04 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java @@ -11,8 +11,10 @@ import gov.cms.bfd.model.rif.entities.InpatientClaim; import gov.cms.bfd.model.rif.entities.OutpatientClaim; import gov.cms.bfd.model.rif.entities.OutpatientClaimLine; +import gov.cms.bfd.model.rif.samhsa.OutpatientTag; import gov.cms.bfd.server.war.commons.C4BBInstutionalClaimSubtypes; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; import gov.cms.bfd.server.war.commons.carin.C4BBAdjudication; @@ -25,6 +27,7 @@ import java.util.Optional; import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -47,6 +50,9 @@ final class OutpatientClaimTransformerV2 implements ClaimTransformerInterfaceV2 private static final String METRIC_NAME = MetricRegistry.name(OutpatientClaimTransformerV2.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -101,6 +107,15 @@ private ExplanationOfBenefit transformClaim(OutpatientClaim claimGroup) { // 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") + .setCode(securityTag) + .setDisplay(securityTag); + // Common group level fields between all claim types // Claim Type + Claim ID => ExplanationOfBenefit.id // CLM_ID => ExplanationOfBenefit.identifier diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java index e15f9830a2..760f541e8c 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java @@ -10,9 +10,11 @@ import gov.cms.bfd.model.codebook.data.CcwCodebookVariable; import gov.cms.bfd.model.rif.entities.SNFClaim; import gov.cms.bfd.model.rif.entities.SNFClaimLine; +import gov.cms.bfd.model.rif.samhsa.SnfTag; import gov.cms.bfd.server.war.commons.C4BBInstutionalClaimSubtypes; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.CommonTransformerUtils; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; import gov.cms.bfd.server.war.commons.carin.C4BBClaimInstitutionalCareTeamRole; @@ -26,6 +28,7 @@ import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.r4.model.Period; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms CCW {@link SNFClaim} instances into FHIR {@link ExplanationOfBenefit} resources. */ @@ -42,6 +45,9 @@ public class SNFClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(SNFClaimTransformerV2.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -91,6 +97,15 @@ private ExplanationOfBenefit transformClaim(SNFClaim claimGroup) { // 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") + .setCode(securityTag) + .setDisplay(securityTag); + // Common group level fields between all claim types // Claim Type + Claim ID => ExplanationOfBenefit.id // CLM_ID => ExplanationOfBenefit.identifier diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java index 8133343d6b..0affcde39b 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java @@ -8,6 +8,7 @@ import gov.cms.bfd.model.rda.entities.RdaFissClaim; import gov.cms.bfd.model.rda.entities.RdaFissRevenueLine; import gov.cms.bfd.server.war.commons.BBCodingSystems; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.carin.C4BBAdjudicationDiscriminator; import gov.cms.bfd.server.war.r4.providers.pac.common.AbstractTransformerV2; import gov.cms.bfd.server.war.r4.providers.pac.common.FissTransformerV2; @@ -27,6 +28,7 @@ import org.hl7.fhir.r4.model.Meta; import org.hl7.fhir.r4.model.Reference; import org.hl7.fhir.r4.model.codesystems.ClaimType; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms FISS/MCS instances into FHIR {@link ClaimResponse} resources. */ @@ -41,6 +43,9 @@ public class FissClaimResponseTransformerV2 extends AbstractTransformerV2 private static final String METRIC_NAME = MetricRegistry.name(FissClaimResponseTransformerV2.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * The known FISS status codes and their associated {@link ClaimResponse.RemittanceOutcome} * mappings. @@ -114,7 +119,25 @@ private ClaimResponse transformClaim(RdaFissClaim claimGroup) { claim.setRequest(new Reference(String.format("Claim/f-%s", claimGroup.getClaimId()))); claim.setItem(getClaimItems(claimGroup)); - claim.setMeta(new Meta().setLastUpdated(Date.from(claimGroup.getLastUpdated()))); + // claim.getType(), claim.getIdElement().getIdPart() + String securityTag = + lookUpSamhsaSecurityTags.getClaimSecurityLevel(claim.getType(), claim.getIdPart()); + + // Create a list of Coding objects to match the required type + List securityTags = new ArrayList<>(); + + // Create a Coding object for the security level + Coding securityTagCoding = + new Coding() + .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") + .setCode(securityTag) + .setDisplay(securityTag); + + // Add the Coding to the list + securityTags.add(securityTagCoding); + Meta meta = new Meta(); + claim.setMeta(meta.setSecurity(securityTags)); + claim.setMeta(meta.setLastUpdated(Date.from(claimGroup.getLastUpdated()))); claim.setCreated(new Date()); return claim; diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java index ed25704d30..026b23807e 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java @@ -14,6 +14,7 @@ import gov.cms.bfd.server.war.commons.BBCodingSystems; import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.IcdCode; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.commons.carin.C4BBOrganizationIdentifierType; import gov.cms.bfd.server.war.commons.carin.C4BBSupportingInfoType; @@ -45,6 +46,7 @@ import org.hl7.fhir.r4.model.codesystems.ClaimType; import org.hl7.fhir.r4.model.codesystems.ExDiagnosistype; import org.hl7.fhir.r4.model.codesystems.ProcessPriority; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms FISS/MCS instances into FHIR {@link Claim} resources. */ @@ -62,6 +64,9 @@ public class FissClaimTransformerV2 extends AbstractTransformerV2 /** The Metric registry. */ private final MetricRegistry metricRegistry; + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The METRIC_NAME constant. */ private static final String METRIC_NAME = MetricRegistry.name(FissClaimTransformerV2.class.getSimpleName(), "transform"); @@ -135,7 +140,25 @@ private Claim transformClaim(RdaFissClaim claimGroup, boolean includeTaxNumbers) claim.setInsurance(getInsurance(claimGroup)); claim.setItem(getClaimItems(claimGroup)); - claim.setMeta(new Meta().setLastUpdated(Date.from(claimGroup.getLastUpdated()))); + String securityTag = + lookUpSamhsaSecurityTags.getClaimSecurityLevel( + claim.getType(), claim.getIdElement().getIdPart()); + + // Create a list of Coding objects to match the required type + List securityTags = new ArrayList<>(); + + // Create a Coding object for the security level + Coding securityTagCoding = + new Coding() + .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") + .setCode(securityTag) + .setDisplay(securityTag); + + // Add the Coding to the list + securityTags.add(securityTagCoding); + Meta meta = new Meta(); + claim.setMeta(meta.setSecurity(securityTags)); + claim.setMeta(meta.setLastUpdated(Date.from(claimGroup.getLastUpdated()))); claim.setCreated(new Date()); return claim; diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java index f952c18494..9620f36995 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java @@ -6,6 +6,7 @@ import com.newrelic.api.agent.Trace; import gov.cms.bfd.model.rda.entities.RdaMcsClaim; import gov.cms.bfd.server.war.commons.BBCodingSystems; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.r4.providers.pac.common.AbstractTransformerV2; import gov.cms.bfd.server.war.r4.providers.pac.common.McsTransformerV2; import gov.cms.bfd.server.war.r4.providers.pac.common.ResourceTransformer; @@ -16,11 +17,13 @@ import java.util.Map; import org.hl7.fhir.r4.model.Claim; import org.hl7.fhir.r4.model.ClaimResponse; +import org.hl7.fhir.r4.model.Coding; import org.hl7.fhir.r4.model.Extension; import org.hl7.fhir.r4.model.Identifier; import org.hl7.fhir.r4.model.Meta; import org.hl7.fhir.r4.model.Reference; import org.hl7.fhir.r4.model.codesystems.ClaimType; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms FISS/MCS instances into FHIR {@link ClaimResponse} resources. */ @@ -35,6 +38,9 @@ public class McsClaimResponseTransformerV2 extends AbstractTransformerV2 private static final String METRIC_NAME = MetricRegistry.name(McsClaimResponseTransformerV2.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * There are only 2 statuses currently being used, and only the ones listed below are mapped to * "CANCELLED". For brevity, the rest are defaulted to "ACTIVE" using {@link @@ -128,7 +134,24 @@ private ClaimResponse transformClaim(RdaMcsClaim claimGroup) { claim.setPatient(new Reference("#patient")); claim.setRequest(new Reference(String.format("Claim/m-%s", claimGroup.getIdrClmHdIcn()))); - claim.setMeta(new Meta().setLastUpdated(Date.from(claimGroup.getLastUpdated()))); + String securityTag = + lookUpSamhsaSecurityTags.getClaimSecurityLevel(claim.getType(), claim.getIdPart()); + + // Create a list of Coding objects to match the required type + List securityTags = new ArrayList<>(); + + // Create a Coding object for the security level + Coding securityTagCoding = + new Coding() + .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") + .setCode(securityTag) + .setDisplay(securityTag); + + // Add the Coding to the list + securityTags.add(securityTagCoding); + Meta meta = new Meta(); + claim.setMeta(meta.setSecurity(securityTags)); + claim.setMeta(meta.setLastUpdated(Date.from(claimGroup.getLastUpdated()))); claim.setCreated(new Date()); return claim; diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java index 3a42d2cef3..52f7749230 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java @@ -8,6 +8,7 @@ import gov.cms.bfd.model.rda.entities.RdaMcsDiagnosisCode; import gov.cms.bfd.server.war.commons.BBCodingSystems; import gov.cms.bfd.server.war.commons.IcdCode; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.r4.providers.pac.common.AbstractTransformerV2; import gov.cms.bfd.server.war.r4.providers.pac.common.McsTransformerV2; @@ -36,6 +37,7 @@ import org.hl7.fhir.r4.model.Resource; import org.hl7.fhir.r4.model.codesystems.ClaimType; import org.hl7.fhir.r4.model.codesystems.ProcessPriority; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms FISS/MCS instances into FHIR {@link Claim} resources. */ @@ -44,6 +46,9 @@ public class McsClaimTransformerV2 extends AbstractTransformerV2 implements ResourceTransformer { + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The metric name. */ private static final String METRIC_NAME = MetricRegistry.name(McsClaimResponseTransformerV2.class.getSimpleName(), "transform"); @@ -129,7 +134,26 @@ private Claim transformClaim(RdaMcsClaim claimGroup, boolean includeTaxNumbers) claim.setItem(getItems(claimGroup)); claim.setCreated(new Date()); - claim.setMeta(new Meta().setLastUpdated(Date.from(claimGroup.getLastUpdated()))); + + String securityTag = + lookUpSamhsaSecurityTags.getClaimSecurityLevel( + claim.getType(), claim.getIdElement().getIdPart()); + + // Create a list of Coding objects to match the required type + List securityTags = new ArrayList<>(); + + // Create a Coding object for the security level + Coding securityTagCoding = + new Coding() + .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") + .setCode(securityTag) + .setDisplay(securityTag); + + // Add the Coding to the list + securityTags.add(securityTagCoding); + Meta meta = new Meta(); + claim.setMeta(meta.setSecurity(securityTags)); + claim.setMeta(meta.setLastUpdated(Date.from(claimGroup.getLastUpdated()))); return claim; } diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformer.java index b9ab773ff8..ae10557243 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformer.java @@ -11,8 +11,10 @@ import gov.cms.bfd.model.codebook.data.CcwCodebookVariable; import gov.cms.bfd.model.rif.entities.CarrierClaim; import gov.cms.bfd.model.rif.entities.CarrierClaimLine; +import gov.cms.bfd.model.rif.samhsa.CarrierTag; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.IdentifierType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; @@ -23,6 +25,7 @@ import org.hl7.fhir.dstu3.model.ExplanationOfBenefit; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.dstu3.model.codesystems.ClaimCareteamrole; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms {@link CarrierClaim} instances into FHIR {@link ExplanationOfBenefit} resources. */ @@ -42,6 +45,9 @@ final class CarrierClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(CarrierClaimTransformer.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -314,6 +320,16 @@ private ExplanationOfBenefit transformClaim(CarrierClaim claimGroup, boolean inc } TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); + + 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") + .setCode(securityTag) + .setDisplay(securityTag); return eob; } } diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformer.java index 6a73b9d83d..c2534380fe 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformer.java @@ -9,8 +9,11 @@ import gov.cms.bfd.model.codebook.data.CcwCodebookVariable; import gov.cms.bfd.model.rif.entities.DMEClaim; import gov.cms.bfd.model.rif.entities.DMEClaimLine; +import gov.cms.bfd.model.rif.samhsa.CarrierTag; +import gov.cms.bfd.model.rif.samhsa.DmeTag; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.IdentifierType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; @@ -22,6 +25,7 @@ import org.hl7.fhir.dstu3.model.Extension; import org.hl7.fhir.dstu3.model.Quantity; import org.hl7.fhir.dstu3.model.codesystems.ClaimCareteamrole; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms {@link DMEClaim} instances into FHIR {@link ExplanationOfBenefit} resources. */ @@ -38,6 +42,10 @@ final class DMEClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(DMEClaimTransformer.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired + private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -303,6 +311,16 @@ private ExplanationOfBenefit transformClaim(DMEClaim claimGroup, boolean include } } TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); + + 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") + .setCode(securityTag) + .setDisplay(securityTag); return eob; } } diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformer.java index 45b16c161a..9a62fa08c5 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformer.java @@ -10,7 +10,10 @@ import gov.cms.bfd.model.rif.entities.HHAClaim; import gov.cms.bfd.model.rif.entities.HHAClaimLine; import gov.cms.bfd.model.rif.entities.OutpatientClaim; +import gov.cms.bfd.model.rif.samhsa.DmeTag; +import gov.cms.bfd.model.rif.samhsa.HhaTag; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import java.util.Arrays; @@ -22,6 +25,7 @@ import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.dstu3.model.UnsignedIntType; import org.hl7.fhir.dstu3.model.codesystems.BenefitCategory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms CCW {@link HHAClaim} instances into FHIR {@link ExplanationOfBenefit} resources. */ @@ -37,6 +41,10 @@ final class HHAClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(HHAClaimTransformer.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired + private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -197,6 +205,16 @@ private ExplanationOfBenefit transformClaim(HHAClaim claimGroup) { } TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); + + 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") + .setCode(securityTag) + .setDisplay(securityTag); return eob; } } diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformer.java index 529ea9e2ed..a21b9becb5 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformer.java @@ -9,7 +9,10 @@ import gov.cms.bfd.model.codebook.data.CcwCodebookVariable; import gov.cms.bfd.model.rif.entities.HospiceClaim; import gov.cms.bfd.model.rif.entities.HospiceClaimLine; +import gov.cms.bfd.model.rif.samhsa.HhaTag; +import gov.cms.bfd.model.rif.samhsa.HospiceTag; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import java.util.Arrays; @@ -18,6 +21,7 @@ import org.hl7.fhir.dstu3.model.Address; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.ItemComponent; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -35,6 +39,10 @@ final class HospiceClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(HospiceClaimTransformer.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired + private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -197,6 +205,16 @@ private ExplanationOfBenefit transformClaim(HospiceClaim claimGroup) { eob, item, claimLine.getDeductibleCoinsuranceCd()); } TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); + + 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") + .setCode(securityTag) + .setDisplay(securityTag); return eob; } } diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformer.java index 9a64b9a99f..f082319117 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformer.java @@ -9,7 +9,10 @@ import gov.cms.bfd.model.codebook.data.CcwCodebookVariable; import gov.cms.bfd.model.rif.entities.InpatientClaim; import gov.cms.bfd.model.rif.entities.InpatientClaimLine; +import gov.cms.bfd.model.rif.samhsa.HospiceTag; +import gov.cms.bfd.model.rif.samhsa.InpatientTag; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import java.util.Collections; @@ -17,6 +20,7 @@ import org.hl7.fhir.dstu3.model.Address; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.ItemComponent; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -34,6 +38,10 @@ final class InpatientClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(InpatientClaimTransformer.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired + private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -277,6 +285,16 @@ private ExplanationOfBenefit transformClaim(InpatientClaim claimGroup) { eob, item, claimLine.getDeductibleCoinsuranceCd()); } TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); + + 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") + .setCode(securityTag) + .setDisplay(securityTag); return eob; } } diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformer.java index e1b87c354c..8946565d89 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformer.java @@ -10,7 +10,10 @@ import gov.cms.bfd.model.rif.entities.InpatientClaim; import gov.cms.bfd.model.rif.entities.OutpatientClaim; import gov.cms.bfd.model.rif.entities.OutpatientClaimLine; +import gov.cms.bfd.model.rif.samhsa.InpatientTag; +import gov.cms.bfd.model.rif.samhsa.OutpatientTag; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import java.util.Arrays; @@ -19,6 +22,7 @@ import org.hl7.fhir.dstu3.model.Address; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.ItemComponent; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -38,6 +42,10 @@ final class OutpatientClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(OutpatientClaimTransformer.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired + private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -316,6 +324,16 @@ private ExplanationOfBenefit transformClaim(OutpatientClaim claimGroup) { } } TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); + + 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") + .setCode(securityTag) + .setDisplay(securityTag); return eob; } } diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformer.java index 58cd9e2011..e7efc2f67f 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformer.java @@ -10,8 +10,11 @@ import gov.cms.bfd.model.codebook.data.CcwCodebookVariable; import gov.cms.bfd.model.rif.entities.SNFClaim; import gov.cms.bfd.model.rif.entities.SNFClaimLine; +import gov.cms.bfd.model.rif.samhsa.OutpatientTag; +import gov.cms.bfd.model.rif.samhsa.SnfTag; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.CommonTransformerUtils; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import java.math.BigDecimal; @@ -23,6 +26,7 @@ import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.SupportingInformationComponent; import org.hl7.fhir.dstu3.model.Period; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms CCW {@link SNFClaim} instances into FHIR {@link ExplanationOfBenefit} resources. */ @@ -39,6 +43,10 @@ public class SNFClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(SNFClaimTransformer.class.getSimpleName(), "transform"); + /** Injecting lookUpSamhsaSecurityTags. */ + @Autowired + private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Instantiates a new transformer. * @@ -239,6 +247,16 @@ private ExplanationOfBenefit transformClaim(SNFClaim claimGroup) { eob, item, claimLine.getDeductibleCoinsuranceCd()); } TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); + + 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") + .setCode(securityTag) + .setDisplay(securityTag); return eob; } } diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/LookUpSamhsaSecurityTagsTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/LookUpSamhsaSecurityTagsTest.java new file mode 100644 index 0000000000..9db3b8f17d --- /dev/null +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/LookUpSamhsaSecurityTagsTest.java @@ -0,0 +1,64 @@ +package gov.cms.bfd.server.war.stu3.providers; + +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; +import jakarta.persistence.EntityManager; +import jakarta.persistence.Query; +import org.hl7.fhir.r4.model.CodeableConcept; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import java.util.HashSet; +import java.util.Set; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.*; + +class LookUpSamhsaSecurityTagsTest { + + @Mock + private EntityManager entityManager; + + @Mock + private Query query; + + @InjectMocks + private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); // Initialize mocks + } + + @Test + void testGetClaimSecurityLevel_Inpatient() { + CodeableConcept type = new CodeableConcept(); + type.addCoding().setCode("INP"); + + Set mockTags = new HashSet<>(); + mockTags.add("R"); + when(entityManager.createQuery(anyString())).thenReturn(query); + when(query.getResultList()).thenReturn(new java.util.ArrayList<>(mockTags)); + + String securityLevel = lookUpSamhsaSecurityTags.getClaimSecurityLevel(type, "12345"); + assertEquals("Restricted", securityLevel, "Security level should be 'Restricted' for Inpatient claim with 'R' tag"); + } + + @Test + void testGetClaimSecurityLevel_Outpatient() { + CodeableConcept type = new CodeableConcept(); + type.addCoding().setCode("OUT"); + + Set mockTags = new HashSet<>(); + mockTags.add("NormalTag"); + when(entityManager.createQuery(anyString())).thenReturn(query); + when(query.getResultList()).thenReturn(new java.util.ArrayList<>(mockTags)); + + String securityLevel = lookUpSamhsaSecurityTags.getClaimSecurityLevel(type, "67890"); + assertEquals("Normal", securityLevel, "Security level should be 'Normal' for Outpatient claim with 'NormalTag'"); + } + +} + From d202146bf5b8324f1d9e956070eb8fb71ffa0e06 Mon Sep 17 00:00:00 2001 From: MahiFentaye <168698136+MahiFentaye@users.noreply.github.com> Date: Thu, 19 Dec 2024 17:01:49 -0500 Subject: [PATCH 03/13] BFD-3665 updating comments BFD-3665 updating comments --- .../war/commons/LookUpSamhsaSecurityTags.java | 15 +++++++-------- .../pac/FissClaimResponseTransformerV2.java | 1 - .../r4/providers/pac/FissClaimTransformerV2.java | 1 - .../pac/McsClaimResponseTransformerV2.java | 1 - .../r4/providers/pac/McsClaimTransformerV2.java | 1 - .../providers/LookUpSamhsaSecurityTagsTest.java | 7 +++++++ 6 files changed, 14 insertions(+), 12 deletions(-) diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/LookUpSamhsaSecurityTags.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/LookUpSamhsaSecurityTags.java index 598e2817f3..9811656113 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/LookUpSamhsaSecurityTags.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/LookUpSamhsaSecurityTags.java @@ -86,19 +86,16 @@ public String getClaimSecurityLevel(CodeableConcept type, String claimId) { // No tags for unrecognized claim type break; } - - // Determine the security level based on the collected tags return determineSecurityLevel(securityTags); } /** - * Helper method to get the claim type from the FHIR Claim resource. + * Retrieves the claim type from the Claim resource. * * @param type the FHIR Claim resource * @return the claim type (e.g., "Inpatient", "Outpatient", etc.) */ private String getClaimType(CodeableConcept type) { - // Retrieve the claim type from the Claim resource // CodeableConcept type = claim.getType(); if (type != null && type.hasCoding()) { @@ -130,7 +127,7 @@ private String getClaimType(CodeableConcept type) { } /** - * Helper method to query tags for a specific claim from a specific table. + * Query tags for a specific claim from a specific table. * * @param claimId the name of the variable * @param tagClass the name of the tag class @@ -143,9 +140,12 @@ private Set queryTagsForClaim(String claimId, Class tagClass) { if (FissTag.class.equals(tagClass) || McsTag.class.equals(tagClass)) { // For FissTag and McsTag, claimId is a String sql = "SELECT t.code FROM " + tagClass.getSimpleName() + " t WHERE t.claim = :claim"; + // tagCodes.add("42CFRPart2"); + // tagCodes.add("R"); } else { // For other tags (CarrierTag, DmeTag, etc.), claimId is a Long sql = "SELECT t.code FROM " + tagClass.getSimpleName() + " t WHERE t.claim = :claim"; + // tagCodes.add("NormalTag"); } Query query = entityManager.createQuery(sql); @@ -154,13 +154,12 @@ private Set queryTagsForClaim(String claimId, Class tagClass) { @SuppressWarnings("unchecked") List resultList = query.getResultList(); - // Use a parameterized constructor to initialize the Set with the List tagCodes = new HashSet<>(resultList); return tagCodes; } /** - * Helper method to determine the security level based on the collected tags. + * Determines the security level based on the collected tags. * * @param securityTags value of securityTags * @return SecurityLevel @@ -178,7 +177,7 @@ private String determineSecurityLevel(Set securityTags) { } /** - * Helper method to determine the security level based on the collected tags. + * Determines the security level based on the collected tags. * * @param claimId value of claimId * @param tagClass value of tagClass diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java index 0affcde39b..b60bdd7461 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java @@ -123,7 +123,6 @@ private ClaimResponse transformClaim(RdaFissClaim claimGroup) { String securityTag = lookUpSamhsaSecurityTags.getClaimSecurityLevel(claim.getType(), claim.getIdPart()); - // Create a list of Coding objects to match the required type List securityTags = new ArrayList<>(); // Create a Coding object for the security level diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java index 026b23807e..bdd352dcf8 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java @@ -144,7 +144,6 @@ private Claim transformClaim(RdaFissClaim claimGroup, boolean includeTaxNumbers) lookUpSamhsaSecurityTags.getClaimSecurityLevel( claim.getType(), claim.getIdElement().getIdPart()); - // Create a list of Coding objects to match the required type List securityTags = new ArrayList<>(); // Create a Coding object for the security level diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java index 9620f36995..f454e8b0eb 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java @@ -137,7 +137,6 @@ private ClaimResponse transformClaim(RdaMcsClaim claimGroup) { String securityTag = lookUpSamhsaSecurityTags.getClaimSecurityLevel(claim.getType(), claim.getIdPart()); - // Create a list of Coding objects to match the required type List securityTags = new ArrayList<>(); // Create a Coding object for the security level diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java index 52f7749230..b6d516ad2a 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java @@ -139,7 +139,6 @@ private Claim transformClaim(RdaMcsClaim claimGroup, boolean includeTaxNumbers) lookUpSamhsaSecurityTags.getClaimSecurityLevel( claim.getType(), claim.getIdElement().getIdPart()); - // Create a list of Coding objects to match the required type List securityTags = new ArrayList<>(); // Create a Coding object for the security level diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/LookUpSamhsaSecurityTagsTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/LookUpSamhsaSecurityTagsTest.java index 79842135fa..a0c80b5a18 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/LookUpSamhsaSecurityTagsTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/LookUpSamhsaSecurityTagsTest.java @@ -15,19 +15,25 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; +/** LookUpSamhsaSecurityTags test. */ class LookUpSamhsaSecurityTagsTest { + /** The EntityManager. */ @Mock private EntityManager entityManager; + /** Query. */ @Mock private Query query; + /** LookUpSamhsaSecurityTags. */ @InjectMocks private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** Set up the mocks and the validator being tested. */ @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); // Initialize mocks } + /** testGetClaimSecurityLevel_Inpatient. */ @Test void testGetClaimSecurityLevel_Inpatient() { CodeableConcept type = new CodeableConcept(); @@ -45,6 +51,7 @@ void testGetClaimSecurityLevel_Inpatient() { "Security level should be 'Restricted' for Inpatient claim with 'R' tag"); } + /** testGetClaimSecurityLevel_Outpatient. */ @Test void testGetClaimSecurityLevel_Outpatient() { CodeableConcept type = new CodeableConcept(); From f66fd07eb5cff6cd7de7f2060eca4254233b02ec Mon Sep 17 00:00:00 2001 From: MahiFentaye <168698136+MahiFentaye@users.noreply.github.com> Date: Fri, 3 Jan 2025 13:59:26 -0500 Subject: [PATCH 04/13] BFD-3665 unit tests and few updates BFD-3665 unit tests and few updates --- .../war/commons/LookUpSamhsaSecurityTags.java | 119 +----------------- .../pac/FissClaimResponseTransformerV2.java | 3 +- .../providers/pac/FissClaimTransformerV2.java | 4 +- .../pac/McsClaimResponseTransformerV2.java | 3 +- .../providers/pac/McsClaimTransformerV2.java | 6 +- .../providers/CarrierClaimTransformer.java | 5 +- .../stu3/providers/DMEClaimTransformer.java | 6 +- .../stu3/providers/HHAClaimTransformer.java | 7 +- .../providers/HospiceClaimTransformer.java | 7 +- .../providers/InpatientClaimTransformer.java | 7 +- .../providers/OutpatientClaimTransformer.java | 7 +- .../stu3/providers/SNFClaimTransformer.java | 7 +- .../CarrierClaimTransformerTest.java | 7 +- .../providers/DMEClaimTransformerTest.java | 7 +- .../providers/HHAClaimTransformerTest.java | 7 +- .../HospiceClaimTransformerTest.java | 7 +- .../InpatientClaimTransformerTest.java | 7 +- .../LookUpSamhsaSecurityTagsTest.java | 8 +- .../OutpatientClaimTransformerTest.java | 7 +- .../PatientClaimsEobTaskTransformerTest.java | 37 ++++-- .../providers/SNFClaimTransformerTest.java | 7 +- ...SamhsaMatcherFromClaimTransformerTest.java | 24 ++-- .../providers/Stu3EobSamhsaMatcherTest.java | 18 ++- .../stu3/providers/TransformerTestUtils.java | 26 ++-- .../stu3/providers/TransformerUtilsTest.java | 19 ++- 25 files changed, 190 insertions(+), 172 deletions(-) diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/LookUpSamhsaSecurityTags.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/LookUpSamhsaSecurityTags.java index 9811656113..6c0b13207a 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/LookUpSamhsaSecurityTags.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/LookUpSamhsaSecurityTags.java @@ -1,21 +1,11 @@ package gov.cms.bfd.server.war.commons; -import gov.cms.bfd.model.rda.samhsa.FissTag; -import gov.cms.bfd.model.rda.samhsa.McsTag; -import gov.cms.bfd.model.rif.samhsa.CarrierTag; -import gov.cms.bfd.model.rif.samhsa.DmeTag; -import gov.cms.bfd.model.rif.samhsa.HhaTag; -import gov.cms.bfd.model.rif.samhsa.HospiceTag; -import gov.cms.bfd.model.rif.samhsa.InpatientTag; -import gov.cms.bfd.model.rif.samhsa.OutpatientTag; -import gov.cms.bfd.model.rif.samhsa.SnfTag; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; import jakarta.persistence.Query; import java.util.HashSet; import java.util.List; import java.util.Set; -import org.hl7.fhir.r4.model.CodeableConcept; import org.springframework.stereotype.Service; /** Find security level. */ @@ -35,97 +25,6 @@ public void setEntityManager(EntityManager entityManager) { this.entityManager = entityManager; } - /** - * Method to find the security level of a given claim ID. - * - * @param type holds Claim - * @param claimId holds Claim - * @return SecurityLevel - */ - public String getClaimSecurityLevel(CodeableConcept type, String claimId) { - // Identify the claim type (e.g., Inpatient, Outpatient, Carrier, etc.) - - // claimId = claim.getIdElement().getIdPart() - // CodeableConcept type, claimId - - // CodeableConcept type = claim.getType(); - String claimType = getClaimType(type); - - Set securityTags = new HashSet<>(); - - // Query tags based on the claim type - switch (claimType) { - case "Inpatient": - securityTags.addAll(queryTagsForClaim(claimId, InpatientTag.class)); - break; - case "Outpatient": - securityTags.addAll(queryTagsForClaim(claimId, OutpatientTag.class)); - break; - case "Carrier": - securityTags.addAll(queryTagsForClaim(claimId, CarrierTag.class)); - break; - case "DME": - securityTags.addAll(queryTagsForClaim(claimId, DmeTag.class)); - break; - case "HHA": - securityTags.addAll(queryTagsForClaim(claimId, HhaTag.class)); - break; - case "Hospice": - securityTags.addAll(queryTagsForClaim(claimId, HospiceTag.class)); - break; - case "SNF": - securityTags.addAll(queryTagsForClaim(claimId, SnfTag.class)); - break; - case "FISS": - securityTags.addAll(queryTagsForClaim(claimId, FissTag.class)); - break; - case "MCS": - securityTags.addAll(queryTagsForClaim(claimId, McsTag.class)); - break; - default: - // No tags for unrecognized claim type - break; - } - return determineSecurityLevel(securityTags); - } - - /** - * Retrieves the claim type from the Claim resource. - * - * @param type the FHIR Claim resource - * @return the claim type (e.g., "Inpatient", "Outpatient", etc.) - */ - private String getClaimType(CodeableConcept type) { - // CodeableConcept type = claim.getType(); - if (type != null && type.hasCoding()) { - - String code = type.getCodingFirstRep().getCode(); - switch (code) { - case "INP": - return "Inpatient"; - case "OUT": - return "Outpatient"; - case "CAR": - return "Carrier"; - case "DME": - return "DME"; - case "HHA": - return "HHA"; - case "HOS": - return "Hospice"; - case "SNF": - return "SNF"; - case "FISS": - return "FISS"; - case "MCS": - return "MCS"; - default: - return "Unknown"; - } - } - return "Unknown"; // Return "Unknown" if type is not set - } - /** * Query tags for a specific claim from a specific table. * @@ -134,19 +33,8 @@ private String getClaimType(CodeableConcept type) { * @return queryTagsForClaim */ private Set queryTagsForClaim(String claimId, Class tagClass) { - Set tagCodes = new HashSet<>(); - String sql; - if (FissTag.class.equals(tagClass) || McsTag.class.equals(tagClass)) { - // For FissTag and McsTag, claimId is a String - sql = "SELECT t.code FROM " + tagClass.getSimpleName() + " t WHERE t.claim = :claim"; - // tagCodes.add("42CFRPart2"); - // tagCodes.add("R"); - } else { - // For other tags (CarrierTag, DmeTag, etc.), claimId is a Long - sql = "SELECT t.code FROM " + tagClass.getSimpleName() + " t WHERE t.claim = :claim"; - // tagCodes.add("NormalTag"); - } + String sql = "SELECT t.code FROM " + tagClass.getSimpleName() + " t WHERE t.claim = :claim"; Query query = entityManager.createQuery(sql); query.setParameter("claim", claimId); @@ -154,8 +42,7 @@ private Set queryTagsForClaim(String claimId, Class tagClass) { @SuppressWarnings("unchecked") List resultList = query.getResultList(); - tagCodes = new HashSet<>(resultList); - return tagCodes; + return new HashSet<>(resultList); } /** @@ -186,7 +73,5 @@ private String determineSecurityLevel(Set securityTags) { public String getClaimSecurityLevel(String claimId, Class tagClass) { return determineSecurityLevel(queryTagsForClaim(claimId, tagClass)); - // return queryTagsForClaim(claimId, tagClass); - } } diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java index b60bdd7461..7cd0b7f359 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java @@ -7,6 +7,7 @@ import com.newrelic.api.agent.Trace; import gov.cms.bfd.model.rda.entities.RdaFissClaim; import gov.cms.bfd.model.rda.entities.RdaFissRevenueLine; +import gov.cms.bfd.model.rda.samhsa.FissTag; import gov.cms.bfd.server.war.commons.BBCodingSystems; import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.carin.C4BBAdjudicationDiscriminator; @@ -121,7 +122,7 @@ private ClaimResponse transformClaim(RdaFissClaim claimGroup) { // claim.getType(), claim.getIdElement().getIdPart() String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel(claim.getType(), claim.getIdPart()); + lookUpSamhsaSecurityTags.getClaimSecurityLevel(claim.getId(), FissTag.class); List securityTags = new ArrayList<>(); diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java index bdd352dcf8..6cd802b629 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java @@ -11,6 +11,7 @@ import gov.cms.bfd.model.rda.entities.RdaFissPayer; import gov.cms.bfd.model.rda.entities.RdaFissProcCode; import gov.cms.bfd.model.rda.entities.RdaFissRevenueLine; +import gov.cms.bfd.model.rda.samhsa.FissTag; import gov.cms.bfd.server.war.commons.BBCodingSystems; import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.IcdCode; @@ -141,8 +142,7 @@ private Claim transformClaim(RdaFissClaim claimGroup, boolean includeTaxNumbers) claim.setItem(getClaimItems(claimGroup)); String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel( - claim.getType(), claim.getIdElement().getIdPart()); + lookUpSamhsaSecurityTags.getClaimSecurityLevel(claim.getId(), FissTag.class); List securityTags = new ArrayList<>(); diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java index f454e8b0eb..cb58c8647b 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java @@ -5,6 +5,7 @@ import com.google.common.base.Strings; import com.newrelic.api.agent.Trace; import gov.cms.bfd.model.rda.entities.RdaMcsClaim; +import gov.cms.bfd.model.rda.samhsa.McsTag; import gov.cms.bfd.server.war.commons.BBCodingSystems; import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.r4.providers.pac.common.AbstractTransformerV2; @@ -135,7 +136,7 @@ private ClaimResponse transformClaim(RdaMcsClaim claimGroup) { claim.setRequest(new Reference(String.format("Claim/m-%s", claimGroup.getIdrClmHdIcn()))); String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel(claim.getType(), claim.getIdPart()); + lookUpSamhsaSecurityTags.getClaimSecurityLevel(claim.getId(), McsTag.class); List securityTags = new ArrayList<>(); diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java index b6d516ad2a..4e6473e474 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java @@ -6,6 +6,7 @@ import gov.cms.bfd.model.rda.entities.RdaMcsClaim; import gov.cms.bfd.model.rda.entities.RdaMcsDetail; import gov.cms.bfd.model.rda.entities.RdaMcsDiagnosisCode; +import gov.cms.bfd.model.rda.samhsa.McsTag; import gov.cms.bfd.server.war.commons.BBCodingSystems; import gov.cms.bfd.server.war.commons.IcdCode; import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; @@ -135,9 +136,8 @@ private Claim transformClaim(RdaMcsClaim claimGroup, boolean includeTaxNumbers) claim.setCreated(new Date()); - String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel( - claim.getType(), claim.getIdElement().getIdPart()); + String claimId = claim.getId().replaceAll("\\D", ""); + String securityTag = lookUpSamhsaSecurityTags.getClaimSecurityLevel(claimId, McsTag.class); List securityTags = new ArrayList<>(); diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformer.java index ae10557243..04c1754b6a 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformer.java @@ -58,14 +58,17 @@ final class CarrierClaimTransformer implements ClaimTransformerInterface { * @param metricRegistry the metric registry * @param drugCodeDisplayLookup the drug code display lookup * @param npiOrgLookup the npi org lookup + * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup */ public CarrierClaimTransformer( MetricRegistry metricRegistry, FdaDrugCodeDisplayLookup drugCodeDisplayLookup, - NPIOrgLookup npiOrgLookup) { + NPIOrgLookup npiOrgLookup, + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); this.drugCodeDisplayLookup = requireNonNull(drugCodeDisplayLookup); + this.lookUpSamhsaSecurityTags = lookUpSamhsaSecurityTags; } /** diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformer.java index 621389d25e..43c6384c4f 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformer.java @@ -53,11 +53,15 @@ final class DMEClaimTransformer implements ClaimTransformerInterface { * * @param metricRegistry the metric registry * @param drugCodeDisplayLookup the drug code display lookup + * @param lookUpSamhsaSecurityTags SamhsaSecurityTag lookup */ public DMEClaimTransformer( - MetricRegistry metricRegistry, FdaDrugCodeDisplayLookup drugCodeDisplayLookup) { + MetricRegistry metricRegistry, + FdaDrugCodeDisplayLookup drugCodeDisplayLookup, + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { this.metricRegistry = requireNonNull(metricRegistry); this.drugCodeDisplayLookup = requireNonNull(drugCodeDisplayLookup); + this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); } /** diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformer.java index 4b00b9cde6..4e7f2bcc51 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformer.java @@ -52,10 +52,15 @@ final class HHAClaimTransformer implements ClaimTransformerInterface { * * @param metricRegistry the metric registry * @param npiOrgLookup the npi org lookup + * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup */ - public HHAClaimTransformer(MetricRegistry metricRegistry, NPIOrgLookup npiOrgLookup) { + public HHAClaimTransformer( + MetricRegistry metricRegistry, + NPIOrgLookup npiOrgLookup, + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); + this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); } /** diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformer.java index ed397cebc1..98db87c66a 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformer.java @@ -50,10 +50,15 @@ final class HospiceClaimTransformer implements ClaimTransformerInterface { * * @param metricRegistry the metric registry * @param npiOrgLookup the npi org lookup + * @param lookUpSamhsaSecurityTags lookUpSamhsaSecurityTags */ - public HospiceClaimTransformer(MetricRegistry metricRegistry, NPIOrgLookup npiOrgLookup) { + public HospiceClaimTransformer( + MetricRegistry metricRegistry, + NPIOrgLookup npiOrgLookup, + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); + this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); } /** diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformer.java index 7d10476d8f..f842ad76b9 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformer.java @@ -49,10 +49,15 @@ final class InpatientClaimTransformer implements ClaimTransformerInterface { * * @param metricRegistry the metric registry * @param npiOrgLookup the npi org lookup + * @param lookUpSamhsaSecurityTags SamhsaSecurityTag lookup */ - public InpatientClaimTransformer(MetricRegistry metricRegistry, NPIOrgLookup npiOrgLookup) { + public InpatientClaimTransformer( + MetricRegistry metricRegistry, + NPIOrgLookup npiOrgLookup, + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); + this.lookUpSamhsaSecurityTags = lookUpSamhsaSecurityTags; } /** diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformer.java index 00fed8e872..84eaa296c0 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformer.java @@ -53,10 +53,15 @@ final class OutpatientClaimTransformer implements ClaimTransformerInterface { * * @param metricRegistry the metric registry * @param npiOrgLookup the npi org lookup + * @param lookUpSamhsaSecurityTags SamhsaSecurityTag lookup */ - public OutpatientClaimTransformer(MetricRegistry metricRegistry, NPIOrgLookup npiOrgLookup) { + public OutpatientClaimTransformer( + MetricRegistry metricRegistry, + NPIOrgLookup npiOrgLookup, + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); + this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); } /** diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformer.java index baed6100de..daf02517a1 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformer.java @@ -54,10 +54,15 @@ public class SNFClaimTransformer implements ClaimTransformerInterface { * * @param metricRegistry the metric registry * @param npiOrgLookup the npi org lookup + * @param lookUpSamhsaSecurityTags SamhsaSecurityTag lookup */ - public SNFClaimTransformer(MetricRegistry metricRegistry, NPIOrgLookup npiOrgLookup) { + public SNFClaimTransformer( + MetricRegistry metricRegistry, + NPIOrgLookup npiOrgLookup, + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); + this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); } /** diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformerTest.java index 55f76a61f8..a75ff0adbd 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformerTest.java @@ -23,6 +23,7 @@ import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; @@ -61,6 +62,9 @@ public final class CarrierClaimTransformerTest { /** The NPI org lookup to use for the test. */ @Mock NPIOrgLookup npiOrgLookup; + /** The lookUpSamhsaSecurityTags. */ + @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The mock metric timer. */ @Mock Timer metricsTimer; @@ -78,7 +82,8 @@ protected void setup() { .thenReturn("UNKNOWN"); carrierClaimTransformer = - new CarrierClaimTransformer(metricRegistry, drugDisplayLookup, npiOrgLookup); + new CarrierClaimTransformer( + metricRegistry, drugDisplayLookup, npiOrgLookup, lookUpSamhsaSecurityTags); } /** diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformerTest.java index 60df29d056..70164f41cb 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformerTest.java @@ -22,6 +22,7 @@ import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.TransformerConstants; import java.io.IOException; @@ -55,6 +56,9 @@ public final class DMEClaimTransformerTest { /** The FDA drug lookup to use for the test. */ @Mock FdaDrugCodeDisplayLookup drugDisplayLookup; + /** The lookUpSamhsaSecurityTags. */ + @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The metrics timer. Used for determining the timer was started. */ @Mock Timer metricsTimer; @@ -70,7 +74,8 @@ protected void setup() { when(drugDisplayLookup.retrieveFDADrugCodeDisplay(Optional.of(anyString()))) .thenReturn("UNKNOWN"); - dmeClaimTransformer = new DMEClaimTransformer(metricRegistry, drugDisplayLookup); + dmeClaimTransformer = + new DMEClaimTransformer(metricRegistry, drugDisplayLookup, lookUpSamhsaSecurityTags); } /** diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformerTest.java index 7f61ffcef4..d71dcb4253 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformerTest.java @@ -16,6 +16,7 @@ import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; @@ -46,6 +47,9 @@ public final class HHAClaimTransformerTest { /** The Metric Registry to use for the test. */ @Mock MetricRegistry metricRegistry; + /** The lookUpSamhsaSecurityTags. */ + @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The metrics timer. Used for determining the timer was started. */ @Mock Timer metricsTimer; @@ -63,7 +67,8 @@ public void setup() throws IOException { npiOrgLookup = RDATestUtils.mockNPIOrgLookup(); hhaClaimTransformer = - new HHAClaimTransformer(metricRegistry, NPIOrgLookup.createNpiOrgLookup()); + new HHAClaimTransformer( + metricRegistry, NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); } /** Releases the static mock NPIOrgLookup. */ diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformerTest.java index d0cd9289ad..326292e909 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformerTest.java @@ -16,6 +16,7 @@ import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; @@ -52,6 +53,9 @@ public final class HospiceClaimTransformerTest { /** The metrics timer context. Used for determining the timer was stopped. */ @Mock Timer.Context metricsTimerContext; + /** The lookUpSamhsaSecurityTags. */ + @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The NPI org lookup to use for the test. */ private MockedStatic npiOrgLookup; @@ -63,7 +67,8 @@ public void setup() throws IOException { npiOrgLookup = RDATestUtils.mockNPIOrgLookup(); hospiceClaimTransformer = - new HospiceClaimTransformer(metricRegistry, NPIOrgLookup.createNpiOrgLookup()); + new HospiceClaimTransformer( + metricRegistry, NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); } /** Releases the static mock NPIOrgLookup. */ diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformerTest.java index cc7207bb9a..c53893baeb 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformerTest.java @@ -19,6 +19,7 @@ import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.CommonTransformerUtils; import gov.cms.bfd.server.war.commons.Diagnosis; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; @@ -49,6 +50,9 @@ public final class InpatientClaimTransformerTest { /** The Metric Registry to use for the test. */ @Mock MetricRegistry metricRegistry; + /** The lookUpSamhsaSecurityTags. */ + @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The metrics timer. Used for determining the timer was started. */ @Mock Timer metricsTimer; @@ -66,7 +70,8 @@ public void setup() throws IOException { npiOrgLookup = RDATestUtils.mockNPIOrgLookup(); inpatientClaimTransformer = - new InpatientClaimTransformer(metricRegistry, NPIOrgLookup.createNpiOrgLookup()); + new InpatientClaimTransformer( + metricRegistry, NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); } /** Releases the static mock NPIOrgLookup. */ diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/LookUpSamhsaSecurityTagsTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/LookUpSamhsaSecurityTagsTest.java index a0c80b5a18..235221554e 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/LookUpSamhsaSecurityTagsTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/LookUpSamhsaSecurityTagsTest.java @@ -3,6 +3,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.*; +import gov.cms.bfd.model.rif.samhsa.CarrierTag; +import gov.cms.bfd.model.rif.samhsa.HospiceTag; import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import jakarta.persistence.EntityManager; import jakarta.persistence.Query; @@ -44,7 +46,8 @@ void testGetClaimSecurityLevel_Inpatient() { when(entityManager.createQuery(anyString())).thenReturn(query); when(query.getResultList()).thenReturn(new java.util.ArrayList<>(mockTags)); - String securityLevel = lookUpSamhsaSecurityTags.getClaimSecurityLevel(type, "12345"); + String securityLevel = + lookUpSamhsaSecurityTags.getClaimSecurityLevel("12345", CarrierTag.class); assertEquals( "Restricted", securityLevel, @@ -62,7 +65,8 @@ void testGetClaimSecurityLevel_Outpatient() { when(entityManager.createQuery(anyString())).thenReturn(query); when(query.getResultList()).thenReturn(new java.util.ArrayList<>(mockTags)); - String securityLevel = lookUpSamhsaSecurityTags.getClaimSecurityLevel(type, "67890"); + String securityLevel = + lookUpSamhsaSecurityTags.getClaimSecurityLevel("67890", HospiceTag.class); assertEquals( "Normal", securityLevel, diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformerTest.java index a4d50820f3..72b999dc0b 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformerTest.java @@ -18,6 +18,7 @@ import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.CCWProcedure; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; @@ -51,6 +52,9 @@ public final class OutpatientClaimTransformerTest { /** The Metric Registry to use for the test. */ @Mock MetricRegistry metricRegistry; + /** The SamhsaSecurityTag lookup. */ + @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The metrics timer. Used for determining the timer was started. */ @Mock Timer metricsTimer; @@ -68,7 +72,8 @@ public void setup() throws IOException { npiOrgLookup = RDATestUtils.mockNPIOrgLookup(); outpatientClaimTransformer = - new OutpatientClaimTransformer(metricRegistry, NPIOrgLookup.createNpiOrgLookup()); + new OutpatientClaimTransformer( + metricRegistry, NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); } /** Releases the static mock NPIOrgLookup. */ diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/PatientClaimsEobTaskTransformerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/PatientClaimsEobTaskTransformerTest.java index cc23060d37..575b6afe5e 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/PatientClaimsEobTaskTransformerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/PatientClaimsEobTaskTransformerTest.java @@ -30,6 +30,7 @@ import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import jakarta.persistence.EntityManager; @@ -77,6 +78,9 @@ class PatientClaimsEobTaskTransformerTest { /** The NPI Org lookup. */ @Mock NPIOrgLookup mockNpiOrgLookup; + /** The lookUpSamhsaSecurityTags. */ + @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The FDA drug display lookup. */ @Mock FdaDrugCodeDisplayLookup mockDrugDisplayLookup; @@ -204,7 +208,11 @@ void testTaskTransformerUsingCarrierClaimNoSamhsaFilter() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterface claimTransformer = - new CarrierClaimTransformer(new MetricRegistry(), mockDrugDisplayLookup, mockNpiOrgLookup); + new CarrierClaimTransformer( + new MetricRegistry(), + mockDrugDisplayLookup, + mockNpiOrgLookup, + lookUpSamhsaSecurityTags); PatientClaimsEobTaskTransformer taskTransformer = new PatientClaimsEobTaskTransformer( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -237,7 +245,11 @@ void testTaskTransformerUsingCarrierClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterface claimTransformer = - new CarrierClaimTransformer(new MetricRegistry(), mockDrugDisplayLookup, mockNpiOrgLookup); + new CarrierClaimTransformer( + new MetricRegistry(), + mockDrugDisplayLookup, + mockNpiOrgLookup, + lookUpSamhsaSecurityTags); PatientClaimsEobTaskTransformer taskTransformer = new PatientClaimsEobTaskTransformer( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -270,7 +282,8 @@ void testTaskTransformerUsingDmeClaimNoSamhsaFilter() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterface claimTransformer = - new DMEClaimTransformer(new MetricRegistry(), mockDrugDisplayLookup); + new DMEClaimTransformer( + new MetricRegistry(), mockDrugDisplayLookup, lookUpSamhsaSecurityTags); PatientClaimsEobTaskTransformer taskTransformer = new PatientClaimsEobTaskTransformer( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -303,7 +316,8 @@ void testTaskTransformerUsingDmeClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterface claimTransformer = - new DMEClaimTransformer(new MetricRegistry(), mockDrugDisplayLookup); + new DMEClaimTransformer( + new MetricRegistry(), mockDrugDisplayLookup, lookUpSamhsaSecurityTags); PatientClaimsEobTaskTransformer taskTransformer = new PatientClaimsEobTaskTransformer( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -336,7 +350,7 @@ void testTaskTransformerUsingHhaClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterface claimTransformer = - new HHAClaimTransformer(new MetricRegistry(), mockNpiOrgLookup); + new HHAClaimTransformer(new MetricRegistry(), mockNpiOrgLookup, lookUpSamhsaSecurityTags); PatientClaimsEobTaskTransformer taskTransformer = new PatientClaimsEobTaskTransformer( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -370,7 +384,8 @@ void testTaskTransformerUsingHospiceClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterface claimTransformer = - new HospiceClaimTransformer(new MetricRegistry(), mockNpiOrgLookup); + new HospiceClaimTransformer( + new MetricRegistry(), mockNpiOrgLookup, lookUpSamhsaSecurityTags); PatientClaimsEobTaskTransformer taskTransformer = new PatientClaimsEobTaskTransformer( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -404,7 +419,8 @@ void testTaskTransformerUsingInpatientClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterface claimTransformer = - new InpatientClaimTransformer(new MetricRegistry(), mockNpiOrgLookup); + new InpatientClaimTransformer( + new MetricRegistry(), mockNpiOrgLookup, lookUpSamhsaSecurityTags); PatientClaimsEobTaskTransformer taskTransformer = new PatientClaimsEobTaskTransformer( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -438,7 +454,8 @@ void testTaskTransformerUsingOutpatientClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterface claimTransformer = - new OutpatientClaimTransformer(new MetricRegistry(), mockNpiOrgLookup); + new OutpatientClaimTransformer( + new MetricRegistry(), mockNpiOrgLookup, lookUpSamhsaSecurityTags); PatientClaimsEobTaskTransformer taskTransformer = new PatientClaimsEobTaskTransformer( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -506,7 +523,7 @@ void testTaskTransformerUsingSnfClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterface claimTransformer = - new SNFClaimTransformer(new MetricRegistry(), mockNpiOrgLookup); + new SNFClaimTransformer(new MetricRegistry(), mockNpiOrgLookup, lookUpSamhsaSecurityTags); PatientClaimsEobTaskTransformer taskTransformer = new PatientClaimsEobTaskTransformer( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -542,7 +559,7 @@ void testGetFailureFromTaskTransformer() { setupClaimEntity(mockEntityManager, ClaimType.DME, clmMockCriteria, clmRoot); ClaimTransformerInterface claimTransformer = - new SNFClaimTransformer(metricRegistry, mockNpiOrgLookup); + new SNFClaimTransformer(metricRegistry, mockNpiOrgLookup, lookUpSamhsaSecurityTags); PatientClaimsEobTaskTransformer taskTransformer = new PatientClaimsEobTaskTransformer( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformerTest.java index 4624855c77..6bf43e4f41 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformerTest.java @@ -18,6 +18,7 @@ import gov.cms.bfd.server.war.commons.CCWProcedure; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.CommonTransformerUtils; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; @@ -50,6 +51,9 @@ public final class SNFClaimTransformerTest { /** The Metric Registry to use for the test. */ @Mock MetricRegistry metricRegistry; + /** The lookUpSamhsaSecurityTags. */ + @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The metrics timer. Used for determining the timer was started. */ @Mock Timer metricsTimer; @@ -67,7 +71,8 @@ public void setup() throws IOException { npiOrgLookup = RDATestUtils.mockNPIOrgLookup(); snfClaimTransformer = - new SNFClaimTransformer(metricRegistry, NPIOrgLookup.createNpiOrgLookup()); + new SNFClaimTransformer( + metricRegistry, NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); } /** Releases the static mock NPIOrgLookup. */ diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SamhsaMatcherFromClaimTransformerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SamhsaMatcherFromClaimTransformerTest.java index 8f1be8b718..f26c0f6bb0 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SamhsaMatcherFromClaimTransformerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SamhsaMatcherFromClaimTransformerTest.java @@ -2,6 +2,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.params.provider.Arguments.arguments; +import static org.mockito.Mockito.mock; import com.codahale.metrics.MetricRegistry; import gov.cms.bfd.data.fda.lookup.FdaDrugCodeDisplayLookup; @@ -21,6 +22,7 @@ import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.IcdCode; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; @@ -116,6 +118,7 @@ public void after() { */ public static Stream data() throws IOException { NPIOrgLookup localNpiLookup = NPIOrgLookup.createNpiOrgLookup(); + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags = mock(LookUpSamhsaSecurityTags.class); InputStream npiDataStream = Thread.currentThread() @@ -125,40 +128,47 @@ public static Stream data() throws IOException { // Load and transform the various claim types for testing ClaimTransformerInterface claimTransformerInterface = - new InpatientClaimTransformer(new MetricRegistry(), localNpiLookup); + new InpatientClaimTransformer( + new MetricRegistry(), localNpiLookup, lookUpSamhsaSecurityTags); ExplanationOfBenefit inpatientEob = claimTransformerInterface.transform(getClaim(InpatientClaim.class), false); String inpatientClaimType = TransformerUtils.getClaimType(inpatientEob).toString(); claimTransformerInterface = - new OutpatientClaimTransformer(new MetricRegistry(), localNpiLookup); + new OutpatientClaimTransformer( + new MetricRegistry(), localNpiLookup, lookUpSamhsaSecurityTags); ExplanationOfBenefit outpatientEob = claimTransformerInterface.transform(getClaim(OutpatientClaim.class), false); String outpatientClaimType = TransformerUtils.getClaimType(outpatientEob).toString(); claimTransformerInterface = - new DMEClaimTransformer(new MetricRegistry(), drugCodeDisplayLookup); + new DMEClaimTransformer( + new MetricRegistry(), drugCodeDisplayLookup, lookUpSamhsaSecurityTags); ExplanationOfBenefit dmeEob = claimTransformerInterface.transform(getClaim(DMEClaim.class), false); String dmeClaimType = TransformerUtils.getClaimType(dmeEob).toString(); - claimTransformerInterface = new HHAClaimTransformer(new MetricRegistry(), localNpiLookup); + claimTransformerInterface = + new HHAClaimTransformer(new MetricRegistry(), localNpiLookup, lookUpSamhsaSecurityTags); ExplanationOfBenefit hhaEob = claimTransformerInterface.transform(getClaim(HHAClaim.class), false); String hhaClaimType = TransformerUtils.getClaimType(hhaEob).toString(); - claimTransformerInterface = new HospiceClaimTransformer(new MetricRegistry(), localNpiLookup); + claimTransformerInterface = + new HospiceClaimTransformer(new MetricRegistry(), localNpiLookup, lookUpSamhsaSecurityTags); ExplanationOfBenefit hospiceEob = claimTransformerInterface.transform(getClaim(HospiceClaim.class), false); String hospiceClaimType = TransformerUtils.getClaimType(hospiceEob).toString(); - claimTransformerInterface = new SNFClaimTransformer(new MetricRegistry(), localNpiLookup); + claimTransformerInterface = + new SNFClaimTransformer(new MetricRegistry(), localNpiLookup, lookUpSamhsaSecurityTags); ExplanationOfBenefit snfEob = claimTransformerInterface.transform(getClaim(SNFClaim.class), false); String snfClaimType = TransformerUtils.getClaimType(snfEob).toString(); claimTransformerInterface = - new CarrierClaimTransformer(new MetricRegistry(), drugCodeDisplayLookup, localNpiLookup); + new CarrierClaimTransformer( + new MetricRegistry(), drugCodeDisplayLookup, localNpiLookup, lookUpSamhsaSecurityTags); ExplanationOfBenefit carrierEob = claimTransformerInterface.transform(getClaim(CarrierClaim.class), false); String carrierClaimType = TransformerUtils.getClaimType(carrierEob).toString(); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/Stu3EobSamhsaMatcherTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/Stu3EobSamhsaMatcherTest.java index 93787a0804..b5a3b7faaf 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/Stu3EobSamhsaMatcherTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/Stu3EobSamhsaMatcherTest.java @@ -19,6 +19,7 @@ import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.IcdCode; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; @@ -38,6 +39,7 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; +import org.mockito.Mock; import org.mockito.MockedStatic; import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoSettings; @@ -52,6 +54,10 @@ @ExtendWith(MockitoExtension.class) @MockitoSettings(strictness = Strictness.LENIENT) public final class Stu3EobSamhsaMatcherTest { + + /** The lookUpSamhsaSecurityTags. */ + @Mock private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The SAMHSA CPT code. */ public static final String SAMPLE_SAMHSA_CPT_CODE = "G0137"; @@ -81,6 +87,8 @@ public final class Stu3EobSamhsaMatcherTest { @BeforeEach void setup() { npiOrgLookup = RDATestUtils.mockNPIOrgLookup(); + // when(lookUpSamhsaSecurityTags.getClaimSecurityLevel(anyString(), eq(HhaTag.class))) + // .thenReturn("Normal"); } /** Releases the static mock NPIOrgLookup and FdaDrugCodeDisplayLookup. */ @@ -184,7 +192,12 @@ public void nonSamhsaRelatedClaims() throws IOException { if (r instanceof Beneficiary || r instanceof BeneficiaryHistory) return null; return TransformerTestUtils.transformRifRecordToEob( - r, new MetricRegistry(), false, fdaDrugCodeDisplayLookup, localNpiLookup); + r, + new MetricRegistry(), + false, + fdaDrugCodeDisplayLookup, + localNpiLookup, + lookUpSamhsaSecurityTags); }) .filter(ExplanationOfBenefit.class::isInstance) .collect(Collectors.toList()); @@ -865,7 +878,8 @@ private ExplanationOfBenefit getSampleAClaim(ClaimType claimType) throws IOExcep new MetricRegistry(), false, RDATestUtils.fdaDrugCodeDisplayLookup(), - NPIOrgLookup.createNpiOrgLookup()); + NPIOrgLookup.createNpiOrgLookup(), + lookUpSamhsaSecurityTags); return sampleEobForClaimType; } diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/TransformerTestUtils.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/TransformerTestUtils.java index f93fd63838..2c8f66d6e5 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/TransformerTestUtils.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/TransformerTestUtils.java @@ -39,6 +39,7 @@ import gov.cms.bfd.server.war.commons.CommonTransformerUtils; import gov.cms.bfd.server.war.commons.Diagnosis; import gov.cms.bfd.server.war.commons.IdentifierType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; @@ -2242,6 +2243,7 @@ static void assertLastUpdatedEquals( * @param includeTaxNumbers if tax numbers should be included in the response * @param drugCodeDisplayLookup the drug code display lookup * @param npiOrgLookup the npi org lookup + * @param lookUpSamhsaSecurityTags SamhsaSecurityTag lookup * @return the transformed {@link ExplanationOfBenefit} for the specified RIF record */ static ExplanationOfBenefit transformRifRecordToEob( @@ -2249,26 +2251,34 @@ static ExplanationOfBenefit transformRifRecordToEob( MetricRegistry metricRegistry, Boolean includeTaxNumbers, FdaDrugCodeDisplayLookup drugCodeDisplayLookup, - NPIOrgLookup npiOrgLookup) { + NPIOrgLookup npiOrgLookup, + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { ClaimTransformerInterface claimTransformerInterface = null; if (rifRecord instanceof CarrierClaim) { claimTransformerInterface = - new CarrierClaimTransformer(metricRegistry, drugCodeDisplayLookup, npiOrgLookup); + new CarrierClaimTransformer( + metricRegistry, drugCodeDisplayLookup, npiOrgLookup, lookUpSamhsaSecurityTags); } else if (rifRecord instanceof DMEClaim) { - claimTransformerInterface = new DMEClaimTransformer(metricRegistry, drugCodeDisplayLookup); + claimTransformerInterface = + new DMEClaimTransformer(metricRegistry, drugCodeDisplayLookup, lookUpSamhsaSecurityTags); } else if (rifRecord instanceof HHAClaim) { - claimTransformerInterface = new HHAClaimTransformer(metricRegistry, npiOrgLookup); + claimTransformerInterface = + new HHAClaimTransformer(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); } else if (rifRecord instanceof HospiceClaim) { - claimTransformerInterface = new HospiceClaimTransformer(metricRegistry, npiOrgLookup); + claimTransformerInterface = + new HospiceClaimTransformer(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); } else if (rifRecord instanceof InpatientClaim) { - claimTransformerInterface = new InpatientClaimTransformer(metricRegistry, npiOrgLookup); + claimTransformerInterface = + new InpatientClaimTransformer(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); } else if (rifRecord instanceof OutpatientClaim) { - claimTransformerInterface = new OutpatientClaimTransformer(metricRegistry, npiOrgLookup); + claimTransformerInterface = + new OutpatientClaimTransformer(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); } else if (rifRecord instanceof PartDEvent) { claimTransformerInterface = new PartDEventTransformer(metricRegistry, drugCodeDisplayLookup); } else if (rifRecord instanceof SNFClaim) { - claimTransformerInterface = new SNFClaimTransformer(metricRegistry, npiOrgLookup); + claimTransformerInterface = + new SNFClaimTransformer(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); } else { throw new BadCodeMonkeyException("Unhandled RifRecord type!"); } diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/TransformerUtilsTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/TransformerUtilsTest.java index 208c2ab66f..0ac0565a6a 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/TransformerUtilsTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/TransformerUtilsTest.java @@ -27,6 +27,7 @@ import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.IdentifierType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.OffsetLinkBuilder; import gov.cms.bfd.server.war.commons.QueryUtils; import gov.cms.bfd.server.war.commons.TransformerConstants; @@ -54,6 +55,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; import org.mockito.MockedStatic; import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoSettings; @@ -69,6 +71,9 @@ public final class TransformerUtilsTest { /** The NPI org lookup to use for the test. */ private MockedStatic npiOrgLookup; + /** The lookUpSamhsaSecurityTags. */ + @Mock private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** One-time setup of objects that are normally injected. */ @BeforeEach public void setup() { @@ -439,7 +444,8 @@ public void createBundleWithoutPaging() throws IOException { FhirContext fhirContext = FhirContext.forDstu3(); ClaimTransformerInterface claimTransformerInterface = - new HHAClaimTransformer(new MetricRegistry(), NPIOrgLookup.createNpiOrgLookup()); + new HHAClaimTransformer( + new MetricRegistry(), NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); ExplanationOfBenefit genEob = claimTransformerInterface.transform(claim, false); IParser parser = fhirContext.newJsonParser(); String json = parser.encodeResourceToString(genEob); @@ -496,7 +502,7 @@ public void createBundleWithPagingWithASizeOf2() throws IOException { MetricRegistry metricRegistry = new MetricRegistry(); ClaimTransformerInterface claimTransformerInterface = - new HHAClaimTransformer(metricRegistry, localNpiLookup); + new HHAClaimTransformer(metricRegistry, localNpiLookup, lookUpSamhsaSecurityTags); ExplanationOfBenefit genEob = claimTransformerInterface.transform(hhaClaim, false); IParser parser = fhirContext.newJsonParser(); @@ -512,7 +518,8 @@ public void createBundleWithPagingWithASizeOf2() throws IOException { .get(); hospiceClaim.setLastUpdated(Instant.now()); - claimTransformerInterface = new HospiceClaimTransformer(metricRegistry, localNpiLookup); + claimTransformerInterface = + new HospiceClaimTransformer(metricRegistry, localNpiLookup, lookUpSamhsaSecurityTags); genEob = claimTransformerInterface.transform(hospiceClaim, false); parser = fhirContext.newJsonParser(); json = parser.encodeResourceToString(genEob); @@ -528,7 +535,8 @@ public void createBundleWithPagingWithASizeOf2() throws IOException { dmeClaim.setLastUpdated(Instant.now()); claimTransformerInterface = - new DMEClaimTransformer(metricRegistry, RDATestUtils.fdaDrugCodeDisplayLookup()); + new DMEClaimTransformer( + metricRegistry, RDATestUtils.fdaDrugCodeDisplayLookup(), lookUpSamhsaSecurityTags); genEob = claimTransformerInterface.transform(dmeClaim, false); parser = fhirContext.newJsonParser(); json = parser.encodeResourceToString(genEob); @@ -543,7 +551,8 @@ public void createBundleWithPagingWithASizeOf2() throws IOException { .get(); inpatientClaim.setLastUpdated(Instant.now()); - claimTransformerInterface = new InpatientClaimTransformer(metricRegistry, localNpiLookup); + claimTransformerInterface = + new InpatientClaimTransformer(metricRegistry, localNpiLookup, lookUpSamhsaSecurityTags); genEob = claimTransformerInterface.transform(inpatientClaim, false); parser = fhirContext.newJsonParser(); json = parser.encodeResourceToString(genEob); From 876e691ca4a7a96dd7bc2ee2c087ef1dbabd7c87 Mon Sep 17 00:00:00 2001 From: MahiFentaye <168698136+MahiFentaye@users.noreply.github.com> Date: Mon, 6 Jan 2025 10:19:46 -0500 Subject: [PATCH 05/13] BFD-3665 fixing unit tests BFD-3665 fixing unit tests --- .../providers/CarrierClaimTransformerV2.java | 5 ++- .../r4/providers/DMEClaimTransformerV2.java | 5 ++- .../r4/providers/HHAClaimTransformerV2.java | 7 ++- .../providers/HospiceClaimTransformerV2.java | 7 ++- .../InpatientClaimTransformerV2.java | 7 ++- .../OutpatientClaimTransformerV2.java | 5 ++- .../r4/providers/SNFClaimTransformerV2.java | 7 ++- .../providers/pac/FissClaimTransformerV2.java | 5 ++- .../providers/pac/McsClaimTransformerV2.java | 5 ++- .../CarrierClaimTransformerV2Test.java | 8 +++- .../providers/DMEClaimTransformerV2Test.java | 7 ++- .../providers/HHAClaimTransformerV2Test.java | 7 ++- .../HospiceClaimTransformerV2Test.java | 7 ++- .../InpatientClaimTransformerV2Test.java | 7 ++- .../OutpatientClaimTransformerV2Test.java | 9 +++- ...PatientClaimsEobTaskTransformerV2Test.java | 43 ++++++++++++++----- .../providers/SNFClaimTransformerV2Test.java | 7 ++- ...saMatcherR4FromClaimTransformerV2Test.java | 20 ++++++--- .../r4/providers/TransformerTestUtilsV2.java | 26 +++++++---- .../r4/providers/TransformerUtilsV2Test.java | 23 +++++++--- .../pac/FissClaimTransformerV2Test.java | 5 ++- .../pac/McsClaimTransformerV2Test.java | 6 ++- .../R4ClaimSamhsaMatcherTransformerTest.java | 17 ++++++-- .../endpoint-responses/v2/claimFissRead.json | 7 ++- .../v2/claimFissReadWithTaxNumbers.json | 7 ++- .../endpoint-responses/v2/claimMcsRead.json | 7 ++- .../v2/claimMcsReadWithTaxNumbers.json | 7 ++- .../v2/claimResponseFissRead.json | 7 ++- .../v2/claimResponseMcsRead.json | 7 ++- .../v2/claimResponseSearch.json | 14 +++++- .../v2/claimResponseSearchPaginated.json | 7 ++- .../endpoint-responses/v2/claimSearch.json | 14 +++++- .../v2/claimSearchPaginated.json | 7 ++- .../v2/claimSearchWithTaxNumbers.json | 14 +++++- 34 files changed, 277 insertions(+), 66 deletions(-) diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java index 592c866c4f..d7f8724906 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java @@ -64,14 +64,17 @@ final class CarrierClaimTransformerV2 implements ClaimTransformerInterfaceV2 { * @param metricRegistry the metric registry * @param drugCodeDisplayLookup the drug code display lookup * @param npiOrgLookup the npi org lookup + * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup */ public CarrierClaimTransformerV2( MetricRegistry metricRegistry, FdaDrugCodeDisplayLookup drugCodeDisplayLookup, - NPIOrgLookup npiOrgLookup) { + NPIOrgLookup npiOrgLookup, + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); this.drugCodeDisplayLookup = requireNonNull(drugCodeDisplayLookup); + this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); } /** diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java index fd05e60ab3..5e92059a8d 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java @@ -62,14 +62,17 @@ final class DMEClaimTransformerV2 implements ClaimTransformerInterfaceV2 { * @param metricRegistry the metric registry * @param drugCodeDisplayLookup the drug code display lookup * @param npiOrgLookup the npi display lookup + * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup */ DMEClaimTransformerV2( MetricRegistry metricRegistry, FdaDrugCodeDisplayLookup drugCodeDisplayLookup, - NPIOrgLookup npiOrgLookup) { + NPIOrgLookup npiOrgLookup, + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { this.metricRegistry = requireNonNull(metricRegistry); this.drugCodeDisplayLookup = requireNonNull(drugCodeDisplayLookup); this.npiOrgLookup = npiOrgLookup; + this.lookUpSamhsaSecurityTags = lookUpSamhsaSecurityTags; } /** diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java index 8a725cfe82..ddcaf67a21 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java @@ -54,10 +54,15 @@ final class HHAClaimTransformerV2 implements ClaimTransformerInterfaceV2 { * * @param metricRegistry the metric registry * @param npiOrgLookup the npi org lookup + * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup */ - public HHAClaimTransformerV2(MetricRegistry metricRegistry, NPIOrgLookup npiOrgLookup) { + public HHAClaimTransformerV2( + MetricRegistry metricRegistry, + NPIOrgLookup npiOrgLookup, + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); + this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); } /** diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java index 810e3efee2..2f888fd125 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java @@ -56,10 +56,15 @@ final class HospiceClaimTransformerV2 implements ClaimTransformerInterfaceV2 { * * @param metricRegistry the metric registry * @param npiOrgLookup the npi org lookup + * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup */ - public HospiceClaimTransformerV2(MetricRegistry metricRegistry, NPIOrgLookup npiOrgLookup) { + public HospiceClaimTransformerV2( + MetricRegistry metricRegistry, + NPIOrgLookup npiOrgLookup, + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); + this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); } /** diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java index 89e9924a15..cbd8a42ae5 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java @@ -58,10 +58,15 @@ final class InpatientClaimTransformerV2 implements ClaimTransformerInterfaceV2 { * * @param metricRegistry the metric registry * @param npiOrgLookup the npi org lookup + * @param lookUpSamhsaSecurityTags SamhsaSecurityTag lookup */ - public InpatientClaimTransformerV2(MetricRegistry metricRegistry, NPIOrgLookup npiOrgLookup) { + public InpatientClaimTransformerV2( + MetricRegistry metricRegistry, + NPIOrgLookup npiOrgLookup, + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); + this.lookUpSamhsaSecurityTags = lookUpSamhsaSecurityTags; } /** diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java index b4ef39cb04..90527591ff 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java @@ -63,14 +63,17 @@ final class OutpatientClaimTransformerV2 implements ClaimTransformerInterfaceV2 * @param metricRegistry the metric registry * @param drugCodeDisplayLookup the drug code display lookup * @param npiOrgLookup the npi org lookup + * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup */ public OutpatientClaimTransformerV2( MetricRegistry metricRegistry, FdaDrugCodeDisplayLookup drugCodeDisplayLookup, - NPIOrgLookup npiOrgLookup) { + NPIOrgLookup npiOrgLookup, + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); this.drugCodeDisplayLookup = requireNonNull(drugCodeDisplayLookup); + this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); } /** diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java index 760f541e8c..123ea2c981 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java @@ -57,10 +57,15 @@ public class SNFClaimTransformerV2 implements ClaimTransformerInterfaceV2 { * * @param metricRegistry the metric registry * @param npiOrgLookup the npi org lookup + * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup */ - public SNFClaimTransformerV2(MetricRegistry metricRegistry, NPIOrgLookup npiOrgLookup) { + public SNFClaimTransformerV2( + MetricRegistry metricRegistry, + NPIOrgLookup npiOrgLookup, + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); + this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); } /** diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java index 6cd802b629..1158b812aa 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java @@ -80,9 +80,12 @@ public class FissClaimTransformerV2 extends AbstractTransformerV2 * called by tests. * * @param metricRegistry the metric registry + * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup */ - public FissClaimTransformerV2(MetricRegistry metricRegistry) { + public FissClaimTransformerV2( + MetricRegistry metricRegistry, LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { this.metricRegistry = requireNonNull(metricRegistry); + this.lookUpSamhsaSecurityTags = lookUpSamhsaSecurityTags; } /** diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java index 4e6473e474..a5a7572374 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java @@ -78,9 +78,12 @@ public class McsClaimTransformerV2 extends AbstractTransformerV2 * called by tests. * * @param metricRegistry the metric registry + * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup */ - public McsClaimTransformerV2(MetricRegistry metricRegistry) { + public McsClaimTransformerV2( + MetricRegistry metricRegistry, LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { this.metricRegistry = metricRegistry; + this.lookUpSamhsaSecurityTags = lookUpSamhsaSecurityTags; } /** diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2Test.java index 9a7bb7475b..fad8ccf0ce 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2Test.java @@ -5,6 +5,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -23,6 +24,7 @@ import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.commons.carin.C4BBClaimProfessionalAndNonClinicianCareTeamRole; @@ -127,10 +129,14 @@ public void before() throws IOException { when(metricsTimer.time()).thenReturn(metricsTimerContext); npiOrgLookup = RDATestUtils.mockNPIOrgLookup(); FdaDrugCodeDisplayLookup drugCodeDisplayLookup = RDATestUtils.fdaFakeDrugCodeDisplayLookup(); + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags = mock(LookUpSamhsaSecurityTags.class); carrierClaimTransformer = new CarrierClaimTransformerV2( - metricRegistry, drugCodeDisplayLookup, NPIOrgLookup.createNpiOrgLookup()); + metricRegistry, + drugCodeDisplayLookup, + NPIOrgLookup.createNpiOrgLookup(), + lookUpSamhsaSecurityTags); claim = generateClaim(); ExplanationOfBenefit genEob = carrierClaimTransformer.transform(claim, false); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2Test.java index 67b95bcaa1..f1220beecb 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2Test.java @@ -21,6 +21,7 @@ import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.CCWUtils; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.ProfileConstants; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; @@ -88,6 +89,9 @@ public final class DMEClaimTransformerV2Test { /** The NPI Org lookup. */ @Mock NPIOrgLookup mockNpiOrgLookup; + /** The SamhsaSecurityTag lookup. */ + @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** * Generates the Claim object to be used in multiple tests. * @@ -121,7 +125,8 @@ public void before() throws IOException { when(mockNpiOrgLookup.retrieveNPIOrgDisplay(any())) .thenReturn(Optional.of("207X00000X\tOrthopaedic Surgery")); dmeClaimTransformer = - new DMEClaimTransformerV2(metricRegistry, fdaDrugCodeDisplayLookup, mockNpiOrgLookup); + new DMEClaimTransformerV2( + metricRegistry, fdaDrugCodeDisplayLookup, mockNpiOrgLookup, lookUpSamhsaSecurityTags); claim = generateClaim(); ExplanationOfBenefit genEob = dmeClaimTransformer.transform(claim, false); IParser parser = fhirContext.newJsonParser(); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2Test.java index 1f434962f6..fe632a38de 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2Test.java @@ -20,6 +20,7 @@ import gov.cms.bfd.model.rif.entities.HHAClaim; import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import gov.cms.bfd.server.war.ServerTestUtils; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.ProfileConstants; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; @@ -86,6 +87,9 @@ public class HHAClaimTransformerV2Test { /** The metrics registry. */ @Mock MetricRegistry metricRegistry; + /** The SamhsaSecurityTag lookup. */ + @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The metrics timer. Used for determining the timer was started. */ @Mock Timer metricsTimer; @@ -127,7 +131,8 @@ public void before() throws IOException { npiOrgLookup = RDATestUtils.mockNPIOrgLookup(); hhaClaimTransformer = - new HHAClaimTransformerV2(metricRegistry, NPIOrgLookup.createNpiOrgLookup()); + new HHAClaimTransformerV2( + metricRegistry, NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); claim = generateClaim(); ExplanationOfBenefit genEob = hhaClaimTransformer.transform(claim, false); IParser parser = fhirContext.newJsonParser(); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2Test.java index 95f8dc3df2..aa669a3e35 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2Test.java @@ -22,6 +22,7 @@ import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.ProfileConstants; import gov.cms.bfd.server.war.commons.TransformerConstants; @@ -86,6 +87,9 @@ public final class HospiceClaimTransformerV2Test { /** The metrics registry. */ @Mock MetricRegistry metricRegistry; + /** The SamhsaSecurityTag lookup. */ + @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The metrics timer. Used for determining the timer was started. */ @Mock Timer metricsTimer; @@ -107,7 +111,8 @@ public void generateClaim() throws FHIRException, IOException { npiOrgLookup = RDATestUtils.mockNPIOrgLookup(); hospiceClaimTransformer = - new HospiceClaimTransformerV2(metricRegistry, NPIOrgLookup.createNpiOrgLookup()); + new HospiceClaimTransformerV2( + metricRegistry, NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); List parsedRecords = ServerTestUtils.parseData(Arrays.asList(StaticRifResourceGroup.SAMPLE_A.getResources())); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2Test.java index 5e4084658a..93e1ab076c 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2Test.java @@ -18,6 +18,7 @@ import gov.cms.bfd.model.rif.entities.InpatientClaim; import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import gov.cms.bfd.server.war.ServerTestUtils; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.ProfileConstants; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; @@ -83,6 +84,9 @@ public final class InpatientClaimTransformerV2Test { /** The metrics registry. */ @Mock MetricRegistry metricRegistry; + /** The SamhsaSecurityTag lookup. */ + @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The metrics timer. Used for determining the timer was started. */ @Mock Timer metricsTimer; @@ -126,7 +130,8 @@ public void before() throws IOException { npiOrgLookup = RDATestUtils.mockNPIOrgLookup(); inpatientClaimTransformer = - new InpatientClaimTransformerV2(metricRegistry, NPIOrgLookup.createNpiOrgLookup()); + new InpatientClaimTransformerV2( + metricRegistry, NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); claim = generateClaim(); ExplanationOfBenefit genEob = inpatientClaimTransformer.transform(claim, false); IParser parser = fhirContext.newJsonParser(); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2Test.java index 982c34df03..b889a8a884 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2Test.java @@ -20,6 +20,7 @@ import gov.cms.bfd.model.rif.entities.OutpatientClaim; import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import gov.cms.bfd.server.war.ServerTestUtils; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.ProfileConstants; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; @@ -83,6 +84,9 @@ public final class OutpatientClaimTransformerV2Test { /** The metrics timer. Used for determining the timer was started. */ @Mock Timer metricsTimer; + /** The SamhsaSecurityTag lookup. */ + @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The metrics timer context. Used for determining the timer was stopped. */ @Mock Timer.Context metricsTimerContext; @@ -124,7 +128,10 @@ public void before() throws IOException { outpatientClaimTransformer = new OutpatientClaimTransformerV2( - metricRegistry, drugCodeDisplayLookup, NPIOrgLookup.createNpiOrgLookup()); + metricRegistry, + drugCodeDisplayLookup, + NPIOrgLookup.createNpiOrgLookup(), + lookUpSamhsaSecurityTags); claim = generateClaim(); ExplanationOfBenefit genEob = outpatientClaimTransformer.transform(claim, false); IParser parser = fhirContext.newJsonParser(); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/PatientClaimsEobTaskTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/PatientClaimsEobTaskTransformerV2Test.java index aac96fe8e3..0e012e9e99 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/PatientClaimsEobTaskTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/PatientClaimsEobTaskTransformerV2Test.java @@ -30,6 +30,7 @@ import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import jakarta.persistence.EntityManager; @@ -77,6 +78,9 @@ class PatientClaimsEobTaskTransformerV2Test { /** The NPI Org lookup. */ @Mock NPIOrgLookup mockNpiOrgLookup; + /** The SamhsaSecurityTag lookup. */ + @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The FDA drug display lookup. */ @Mock FdaDrugCodeDisplayLookup mockDrugDisplayLookup; @@ -209,7 +213,10 @@ void testTaskTransformerUsingCarrierClaimNoSamhsaFilter() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterfaceV2 claimTransformer = new CarrierClaimTransformerV2( - new MetricRegistry(), mockDrugDisplayLookup, mockNpiOrgLookup); + new MetricRegistry(), + mockDrugDisplayLookup, + mockNpiOrgLookup, + lookUpSamhsaSecurityTags); PatientClaimsEobTaskTransformerV2 taskTransformer = new PatientClaimsEobTaskTransformerV2( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -243,7 +250,10 @@ void testTaskTransformerUsingCarrierClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterfaceV2 claimTransformer = new CarrierClaimTransformerV2( - new MetricRegistry(), mockDrugDisplayLookup, mockNpiOrgLookup); + new MetricRegistry(), + mockDrugDisplayLookup, + mockNpiOrgLookup, + lookUpSamhsaSecurityTags); PatientClaimsEobTaskTransformerV2 taskTransformer = new PatientClaimsEobTaskTransformerV2( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -276,7 +286,11 @@ void testTaskTransformerUsingDmeClaimNoSamhsaFilter() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterfaceV2 claimTransformer = - new DMEClaimTransformerV2(new MetricRegistry(), mockDrugDisplayLookup, mockNpiOrgLookup); + new DMEClaimTransformerV2( + new MetricRegistry(), + mockDrugDisplayLookup, + mockNpiOrgLookup, + lookUpSamhsaSecurityTags); PatientClaimsEobTaskTransformerV2 taskTransformer = new PatientClaimsEobTaskTransformerV2( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -309,7 +323,11 @@ void testTaskTransformerUsingDmeClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterfaceV2 claimTransformer = - new DMEClaimTransformerV2(new MetricRegistry(), mockDrugDisplayLookup, mockNpiOrgLookup); + new DMEClaimTransformerV2( + new MetricRegistry(), + mockDrugDisplayLookup, + mockNpiOrgLookup, + lookUpSamhsaSecurityTags); PatientClaimsEobTaskTransformerV2 taskTransformer = new PatientClaimsEobTaskTransformerV2( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -342,7 +360,7 @@ void testTaskTransformerUsingHhaClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterfaceV2 claimTransformer = - new HHAClaimTransformerV2(new MetricRegistry(), mockNpiOrgLookup); + new HHAClaimTransformerV2(new MetricRegistry(), mockNpiOrgLookup, lookUpSamhsaSecurityTags); PatientClaimsEobTaskTransformerV2 taskTransformer = new PatientClaimsEobTaskTransformerV2( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -376,7 +394,8 @@ void testTaskTransformerUsingHospiceClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterfaceV2 claimTransformer = - new HospiceClaimTransformerV2(new MetricRegistry(), mockNpiOrgLookup); + new HospiceClaimTransformerV2( + new MetricRegistry(), mockNpiOrgLookup, lookUpSamhsaSecurityTags); PatientClaimsEobTaskTransformerV2 taskTransformer = new PatientClaimsEobTaskTransformerV2( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -410,7 +429,8 @@ void testTaskTransformerUsingInpatientClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterfaceV2 claimTransformer = - new InpatientClaimTransformerV2(new MetricRegistry(), mockNpiOrgLookup); + new InpatientClaimTransformerV2( + new MetricRegistry(), mockNpiOrgLookup, lookUpSamhsaSecurityTags); PatientClaimsEobTaskTransformerV2 taskTransformer = new PatientClaimsEobTaskTransformerV2( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -445,7 +465,10 @@ void testTaskTransformerUsingOutpatientClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterfaceV2 claimTransformer = new OutpatientClaimTransformerV2( - new MetricRegistry(), mockDrugDisplayLookup, mockNpiOrgLookup); + new MetricRegistry(), + mockDrugDisplayLookup, + mockNpiOrgLookup, + lookUpSamhsaSecurityTags); PatientClaimsEobTaskTransformerV2 taskTransformer = new PatientClaimsEobTaskTransformerV2( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -513,7 +536,7 @@ void testTaskTransformerUsingSnfClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterfaceV2 claimTransformer = - new SNFClaimTransformerV2(new MetricRegistry(), mockNpiOrgLookup); + new SNFClaimTransformerV2(new MetricRegistry(), mockNpiOrgLookup, lookUpSamhsaSecurityTags); PatientClaimsEobTaskTransformerV2 taskTransformer = new PatientClaimsEobTaskTransformerV2( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -549,7 +572,7 @@ void testGetFailureFromTaskTransformer() { setupClaimEntity(mockEntityManager, ClaimType.DME, clmMockCriteria, clmRoot); ClaimTransformerInterfaceV2 claimTransformer = - new SNFClaimTransformerV2(metricRegistry, mockNpiOrgLookup); + new SNFClaimTransformerV2(metricRegistry, mockNpiOrgLookup, lookUpSamhsaSecurityTags); PatientClaimsEobTaskTransformerV2 taskTransformer = new PatientClaimsEobTaskTransformerV2( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2Test.java index 956e9792eb..073dd7f7cf 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2Test.java @@ -19,6 +19,7 @@ import gov.cms.bfd.model.rif.entities.SNFClaim; import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import gov.cms.bfd.server.war.ServerTestUtils; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.ProfileConstants; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; @@ -83,6 +84,9 @@ public class SNFClaimTransformerV2Test { /** The metrics registry. */ @Mock MetricRegistry metricRegistry; + /** The SamhsaSecurityTag lookup. */ + @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The metrics timer. Used for determining the timer was started. */ @Mock Timer metricsTimer; @@ -126,7 +130,8 @@ public void before() throws IOException { npiOrgLookup = RDATestUtils.mockNPIOrgLookup(); snfClaimTransformer = - new SNFClaimTransformerV2(metricRegistry, NPIOrgLookup.createNpiOrgLookup()); + new SNFClaimTransformerV2( + metricRegistry, NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); claim = generateClaim(); ExplanationOfBenefit genEob = snfClaimTransformer.transform(claim, false); IParser parser = fhirContext.newJsonParser(); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/SamhsaMatcherR4FromClaimTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/SamhsaMatcherR4FromClaimTransformerV2Test.java index 4985f5af95..be53c168c6 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/SamhsaMatcherR4FromClaimTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/SamhsaMatcherR4FromClaimTransformerV2Test.java @@ -2,6 +2,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.params.provider.Arguments.arguments; +import static org.mockito.Mockito.mock; import com.codahale.metrics.MetricRegistry; import gov.cms.bfd.data.fda.lookup.FdaDrugCodeDisplayLookup; @@ -21,6 +22,7 @@ import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.IcdCode; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; @@ -130,20 +132,24 @@ public static Stream data() throws IOException { FdaDrugCodeDisplayLookup fdaDrugCodeDisplayLookup = new FdaDrugCodeDisplayLookup(npiDataStream); NPIOrgLookup npiOrgLookup = NPIOrgLookup.createNpiOrgLookup(); MetricRegistry metricRegistry = new MetricRegistry(); + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags = mock(LookUpSamhsaSecurityTags.class); DMEClaimTransformerV2 dmeClaimTransformerV2 = - new DMEClaimTransformerV2(metricRegistry, fdaDrugCodeDisplayLookup, npiOrgLookup); + new DMEClaimTransformerV2( + metricRegistry, fdaDrugCodeDisplayLookup, npiOrgLookup, lookUpSamhsaSecurityTags); CarrierClaimTransformerV2 carrierClaimTransformerV2 = - new CarrierClaimTransformerV2(metricRegistry, fdaDrugCodeDisplayLookup, npiOrgLookup); + new CarrierClaimTransformerV2( + metricRegistry, fdaDrugCodeDisplayLookup, npiOrgLookup, lookUpSamhsaSecurityTags); HHAClaimTransformerV2 hhaClaimTransformerV2 = - new HHAClaimTransformerV2(metricRegistry, npiOrgLookup); + new HHAClaimTransformerV2(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); InpatientClaimTransformerV2 inpatientClaimTransformerV2 = - new InpatientClaimTransformerV2(metricRegistry, npiOrgLookup); + new InpatientClaimTransformerV2(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); OutpatientClaimTransformerV2 outpatientClaimTransformerV2 = - new OutpatientClaimTransformerV2(metricRegistry, fdaDrugCodeDisplayLookup, npiOrgLookup); + new OutpatientClaimTransformerV2( + metricRegistry, fdaDrugCodeDisplayLookup, npiOrgLookup, lookUpSamhsaSecurityTags); PartDEventTransformerV2 partDEventTransformer = new PartDEventTransformerV2(metricRegistry, fdaDrugCodeDisplayLookup, npiOrgLookup); SNFClaimTransformerV2 snfClaimTransformerV2 = - new SNFClaimTransformerV2(metricRegistry, npiOrgLookup); + new SNFClaimTransformerV2(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); ExplanationOfBenefit inpatientEob = inpatientClaimTransformerV2.transform(getClaim(InpatientClaim.class), false); @@ -160,7 +166,7 @@ public static Stream data() throws IOException { String hhaClaimType = TransformerUtilsV2.getClaimType(hhaEob).toString(); HospiceClaimTransformerV2 hospiceClaimTransformerV2 = - new HospiceClaimTransformerV2(new MetricRegistry(), npiOrgLookup); + new HospiceClaimTransformerV2(new MetricRegistry(), npiOrgLookup, lookUpSamhsaSecurityTags); ExplanationOfBenefit hospiceEob = hospiceClaimTransformerV2.transform(getClaim(HospiceClaim.class), false); String hospiceClaimType = TransformerUtilsV2.getClaimType(hospiceEob).toString(); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/TransformerTestUtilsV2.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/TransformerTestUtilsV2.java index fb11c62bea..242dbd82b0 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/TransformerTestUtilsV2.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/TransformerTestUtilsV2.java @@ -28,6 +28,7 @@ import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.CommonTransformerUtils; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.commons.carin.C4BBClaimProfessionalAndNonClinicianCareTeamRole; @@ -1604,6 +1605,7 @@ static void assertExtensionCodingDoesNotExist( * @param includeTaxNumbers if tax numbers should be included in the response * @param drugCodeDisplayLookup the drug code display lookup * @param npiOrgLookup the npi org lookup + * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup * @return the transformed {@link ExplanationOfBenefit} for the specified RIF record */ static ExplanationOfBenefit transformRifRecordToEob( @@ -1611,29 +1613,37 @@ static ExplanationOfBenefit transformRifRecordToEob( MetricRegistry metricRegistry, boolean includeTaxNumbers, FdaDrugCodeDisplayLookup drugCodeDisplayLookup, - NPIOrgLookup npiOrgLookup) { + NPIOrgLookup npiOrgLookup, + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { ClaimTransformerInterfaceV2 claimTransformerInterface = null; if (rifRecord instanceof CarrierClaim) { claimTransformerInterface = - new CarrierClaimTransformerV2(metricRegistry, drugCodeDisplayLookup, npiOrgLookup); + new CarrierClaimTransformerV2( + metricRegistry, drugCodeDisplayLookup, npiOrgLookup, lookUpSamhsaSecurityTags); } else if (rifRecord instanceof DMEClaim) { claimTransformerInterface = - new DMEClaimTransformerV2(metricRegistry, drugCodeDisplayLookup, npiOrgLookup); + new DMEClaimTransformerV2( + metricRegistry, drugCodeDisplayLookup, npiOrgLookup, lookUpSamhsaSecurityTags); } else if (rifRecord instanceof HHAClaim) { - claimTransformerInterface = new HHAClaimTransformerV2(metricRegistry, npiOrgLookup); + claimTransformerInterface = + new HHAClaimTransformerV2(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); } else if (rifRecord instanceof HospiceClaim) { - claimTransformerInterface = new HospiceClaimTransformerV2(metricRegistry, npiOrgLookup); + claimTransformerInterface = + new HospiceClaimTransformerV2(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); } else if (rifRecord instanceof InpatientClaim) { - claimTransformerInterface = new InpatientClaimTransformerV2(metricRegistry, npiOrgLookup); + claimTransformerInterface = + new InpatientClaimTransformerV2(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); } else if (rifRecord instanceof OutpatientClaim) { claimTransformerInterface = - new OutpatientClaimTransformerV2(metricRegistry, drugCodeDisplayLookup, npiOrgLookup); + new OutpatientClaimTransformerV2( + metricRegistry, drugCodeDisplayLookup, npiOrgLookup, lookUpSamhsaSecurityTags); } else if (rifRecord instanceof PartDEvent) { claimTransformerInterface = new PartDEventTransformerV2(metricRegistry, drugCodeDisplayLookup, npiOrgLookup); } else if (rifRecord instanceof SNFClaim) { - claimTransformerInterface = new SNFClaimTransformerV2(metricRegistry, npiOrgLookup); + claimTransformerInterface = + new SNFClaimTransformerV2(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); } else { throw new BadCodeMonkeyException("Unhandled RifRecord type!"); } diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/TransformerUtilsV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/TransformerUtilsV2Test.java index 572b5ca3e0..7438031d07 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/TransformerUtilsV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/TransformerUtilsV2Test.java @@ -29,6 +29,7 @@ import gov.cms.bfd.server.war.commons.C4BBInstutionalClaimSubtypes; import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.ClaimType; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.OffsetLinkBuilder; import gov.cms.bfd.server.war.commons.Profile; import gov.cms.bfd.server.war.commons.ProfileConstants; @@ -71,6 +72,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; import org.mockito.MockedStatic; import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoSettings; @@ -83,6 +85,9 @@ public class TransformerUtilsV2Test { /** The NPI org lookup to use for the test. */ private MockedStatic npiOrgLookup; + /** The SamhsaSecurityTag lookup. */ + @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** One-time setup of objects that are normally injected. */ @BeforeEach protected void setup() { @@ -896,6 +901,7 @@ public void addCareTeamExtensionWhenEmptyOptionalExpectNoExtensionAdded() { public void createBundleWithoutPagingWithASizeOf2() throws IOException { NPIOrgLookup npiOrgLookup = NPIOrgLookup.createNpiOrgLookup(); + // LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags = mock(LookUpSamhsaSecurityTags.class); RequestDetails requestDetails = mock(RequestDetails.class); Map pagingParams = new HashMap(); pagingParams.put(Constants.PARAM_COUNT, new String[] {"2"}); @@ -918,7 +924,7 @@ public void createBundleWithoutPagingWithASizeOf2() throws IOException { FhirContext fhirContext = FhirContext.forR4(); ClaimTransformerInterfaceV2 claimTransformerInterface = - new HHAClaimTransformerV2(new MetricRegistry(), npiOrgLookup); + new HHAClaimTransformerV2(new MetricRegistry(), npiOrgLookup, lookUpSamhsaSecurityTags); ExplanationOfBenefit genEob = claimTransformerInterface.transform(hhaClaim, false); IParser parser = fhirContext.newJsonParser(); String json = parser.encodeResourceToString(genEob); @@ -933,7 +939,8 @@ public void createBundleWithoutPagingWithASizeOf2() throws IOException { .get(); hospiceClaim.setLastUpdated(Instant.now()); - claimTransformerInterface = new HospiceClaimTransformerV2(new MetricRegistry(), npiOrgLookup); + claimTransformerInterface = + new HospiceClaimTransformerV2(new MetricRegistry(), npiOrgLookup, lookUpSamhsaSecurityTags); genEob = claimTransformerInterface.transform(hospiceClaim, false); parser = fhirContext.newJsonParser(); json = parser.encodeResourceToString(genEob); @@ -952,7 +959,10 @@ public void createBundleWithoutPagingWithASizeOf2() throws IOException { .getResourceAsStream(App.FDA_PRODUCTS_RESOURCE); claimTransformerInterface = new DMEClaimTransformerV2( - new MetricRegistry(), new FdaDrugCodeDisplayLookup(npiDataStream), npiOrgLookup); + new MetricRegistry(), + new FdaDrugCodeDisplayLookup(npiDataStream), + npiOrgLookup, + lookUpSamhsaSecurityTags); genEob = claimTransformerInterface.transform(dmeClaim, false); parser = fhirContext.newJsonParser(); json = parser.encodeResourceToString(genEob); @@ -966,7 +976,9 @@ public void createBundleWithoutPagingWithASizeOf2() throws IOException { .get(); inpatientClaim.setLastUpdated(Instant.now()); - claimTransformerInterface = new InpatientClaimTransformerV2(new MetricRegistry(), npiOrgLookup); + claimTransformerInterface = + new InpatientClaimTransformerV2( + new MetricRegistry(), npiOrgLookup, lookUpSamhsaSecurityTags); genEob = claimTransformerInterface.transform(inpatientClaim, false); parser = fhirContext.newJsonParser(); json = parser.encodeResourceToString(genEob); @@ -1093,7 +1105,8 @@ public void createBundleWithoutPaging() throws IOException { FhirContext fhirContext = FhirContext.forR4(); ClaimTransformerInterfaceV2 claimTransformerInterface = - new HHAClaimTransformerV2(new MetricRegistry(), NPIOrgLookup.createNpiOrgLookup()); + new HHAClaimTransformerV2( + new MetricRegistry(), NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); ExplanationOfBenefit genEob = claimTransformerInterface.transform(hhaClaim, false); IParser parser = fhirContext.newJsonParser(); String json = parser.encodeResourceToString(genEob); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2Test.java index c61c0670b2..71c59679f9 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2Test.java @@ -3,11 +3,13 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.params.provider.Arguments.arguments; +import static org.mockito.Mockito.mock; import com.codahale.metrics.MetricRegistry; import gov.cms.bfd.model.rda.entities.RdaFissClaim; import gov.cms.bfd.model.rda.entities.RdaFissDiagnosisCode; import gov.cms.bfd.model.rda.entities.RdaFissRevenueLine; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import java.time.Instant; import java.time.LocalDate; import java.util.ArrayList; @@ -130,6 +132,7 @@ public void diagnosisCodeTest( int numberOfRecords) { RdaFissClaim entity = new RdaFissClaim(); + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags = mock(LookUpSamhsaSecurityTags.class); entity.setLastUpdated(Instant.ofEpochMilli(1)); entity.setStmtCovToDate(LocalDate.of(2020, 1, 1)); @@ -155,7 +158,7 @@ public void diagnosisCodeTest( entity.setRevenueLines(Set.of(line)); FissClaimTransformerV2 fissClaimTransformerV2 = - new FissClaimTransformerV2(new MetricRegistry()); + new FissClaimTransformerV2(new MetricRegistry(), lookUpSamhsaSecurityTags); Claim claim = fissClaimTransformerV2.transform(entity, true); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2Test.java index bd9595c4ff..4093abc8e8 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2Test.java @@ -2,11 +2,13 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.params.provider.Arguments.arguments; +import static org.mockito.Mockito.mock; import com.codahale.metrics.MetricRegistry; import gov.cms.bfd.model.rda.entities.RdaMcsClaim; import gov.cms.bfd.model.rda.entities.RdaMcsDetail; import gov.cms.bfd.model.rda.entities.RdaMcsDiagnosisCode; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import java.time.Instant; import java.time.LocalDate; import java.util.ArrayList; @@ -100,6 +102,7 @@ public void diagnosisCodeTest( int numberOfRecords) { RdaMcsClaim entity = new RdaMcsClaim(); + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags = mock(LookUpSamhsaSecurityTags.class); entity.setLastUpdated(Instant.ofEpochMilli(1)); @@ -141,7 +144,8 @@ public void diagnosisCodeTest( entity.setDiagCodes(diagnoses); entity.setDetails(new HashSet<>(procedures)); - McsClaimTransformerV2 mcsClaimTransformerV2 = new McsClaimTransformerV2(new MetricRegistry()); + McsClaimTransformerV2 mcsClaimTransformerV2 = + new McsClaimTransformerV2(new MetricRegistry(), lookUpSamhsaSecurityTags); Claim claim = mcsClaimTransformerV2.transform(entity, true); assertEquals(numberOfRecords, claim.getDiagnosis().size()); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/R4ClaimSamhsaMatcherTransformerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/R4ClaimSamhsaMatcherTransformerTest.java index 93c931dcd5..949a1b886a 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/R4ClaimSamhsaMatcherTransformerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/R4ClaimSamhsaMatcherTransformerTest.java @@ -2,6 +2,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.params.provider.Arguments.arguments; +import static org.mockito.Mockito.mock; import com.codahale.metrics.MetricRegistry; import gov.cms.bfd.model.rda.entities.RdaFissClaim; @@ -11,6 +12,7 @@ import gov.cms.bfd.model.rda.entities.RdaMcsClaim; import gov.cms.bfd.model.rda.entities.RdaMcsDetail; import gov.cms.bfd.model.rda.entities.RdaMcsDiagnosisCode; +import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import java.time.Instant; import java.time.LocalDate; import java.util.List; @@ -56,6 +58,9 @@ public class R4ClaimSamhsaMatcherTransformerTest { /** A date to use for ICD10 testing. */ private static final LocalDate ICD_10_DATE = LocalDate.of(2020, 1, 1); + // /** The SamhsaSecurityTag lookup. */ + // @Mock + // LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; /** * Data method for the fissTest. Used automatically via the MethodSource annotation. * @@ -359,6 +364,7 @@ public void fissTest( boolean expectedResult, String errorMessagePostFix) { RdaFissClaim entity = new RdaFissClaim(); + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags = mock(LookUpSamhsaSecurityTags.class); entity.setLastUpdated(Instant.ofEpochMilli(1)); entity.setStmtCovToDate(toDate); @@ -398,8 +404,9 @@ public void fissTest( entity.setProcCodes(procedures); entity.setRevenueLines(Set.of(line)); FissClaimTransformerV2 fissClaimTransformerV2 = - new FissClaimTransformerV2(new MetricRegistry()); - McsClaimTransformerV2 mcsClaimTransformerV2 = new McsClaimTransformerV2(new MetricRegistry()); + new FissClaimTransformerV2(new MetricRegistry(), lookUpSamhsaSecurityTags); + McsClaimTransformerV2 mcsClaimTransformerV2 = + new McsClaimTransformerV2(new MetricRegistry(), lookUpSamhsaSecurityTags); Claim claim = fissClaimTransformerV2.transform(entity, true); @@ -495,6 +502,7 @@ public void mcsTest( boolean expectedResult, String errorMessagePostFix) { RdaMcsClaim entity = new RdaMcsClaim(); + LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags = mock(LookUpSamhsaSecurityTags.class); entity.setLastUpdated(Instant.ofEpochMilli(1)); @@ -535,8 +543,9 @@ public void mcsTest( entity.setDetails(procedures); FissClaimTransformerV2 fissClaimTransformerV2 = - new FissClaimTransformerV2(new MetricRegistry()); - McsClaimTransformerV2 mcsClaimTransformerV2 = new McsClaimTransformerV2(new MetricRegistry()); + new FissClaimTransformerV2(new MetricRegistry(), lookUpSamhsaSecurityTags); + McsClaimTransformerV2 mcsClaimTransformerV2 = + new McsClaimTransformerV2(new MetricRegistry(), lookUpSamhsaSecurityTags); Claim claim = mcsClaimTransformerV2.transform(entity, true); diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimFissRead.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimFissRead.json index 65c0347380..200fb8d0a8 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimFissRead.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimFissRead.json @@ -2,7 +2,12 @@ "resourceType": "Claim", "id": "f-123456", "meta": { - "lastUpdated": "1970-08-01T00:00:00.000+00:00" + "lastUpdated": "1970-08-01T00:00:00.000+00:00", + "security" : [ { + "code" : "Normal", + "display" : "Normal", + "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + } ] }, "contained": [ { diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimFissReadWithTaxNumbers.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimFissReadWithTaxNumbers.json index bdb9d72692..74f9484e3a 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimFissReadWithTaxNumbers.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimFissReadWithTaxNumbers.json @@ -2,7 +2,12 @@ "resourceType": "Claim", "id": "f-123456", "meta": { - "lastUpdated": "1970-08-01T00:00:00.000+00:00" + "lastUpdated": "1970-08-01T00:00:00.000+00:00", + "security" : [ { + "code" : "Normal", + "display" : "Normal", + "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + } ] }, "contained": [ { diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimMcsRead.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimMcsRead.json index 0088f1dd09..cbfff8e774 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimMcsRead.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimMcsRead.json @@ -2,7 +2,12 @@ "resourceType": "Claim", "id": "m-654321", "meta": { - "lastUpdated": "1970-01-01T00:00:04.000+00:00" + "lastUpdated": "1970-01-01T00:00:04.000+00:00", + "security" : [ { + "code" : "Normal", + "display" : "Normal", + "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + } ] }, "contained": [ { diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimMcsReadWithTaxNumbers.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimMcsReadWithTaxNumbers.json index 5e62ccb459..87100ee1ea 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimMcsReadWithTaxNumbers.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimMcsReadWithTaxNumbers.json @@ -2,7 +2,12 @@ "resourceType": "Claim", "id": "m-654321", "meta": { - "lastUpdated": "1970-01-01T00:00:04.000+00:00" + "lastUpdated": "1970-01-01T00:00:04.000+00:00", + "security" : [ { + "code" : "Normal", + "display" : "Normal", + "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + } ] }, "contained": [ { diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseFissRead.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseFissRead.json index a6f3541701..def51caf50 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseFissRead.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseFissRead.json @@ -2,7 +2,12 @@ "resourceType": "ClaimResponse", "id": "f-123456", "meta": { - "lastUpdated": "1970-01-01T00:00:00.000+00:00" + "lastUpdated": "1970-01-01T00:00:00.000+00:00", + "security" : [ { + "code" : "Normal", + "display" : "Normal", + "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + } ] }, "contained": [ { diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseMcsRead.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseMcsRead.json index 7d2bdcdc3f..0d35dc498f 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseMcsRead.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseMcsRead.json @@ -2,7 +2,12 @@ "resourceType": "ClaimResponse", "id": "m-654321", "meta": { - "lastUpdated": "1970-01-01T00:00:04.000+00:00" + "lastUpdated": "1970-01-01T00:00:04.000+00:00", + "security" : [ { + "code" : "Normal", + "display" : "Normal", + "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + } ] }, "contained": [ { diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseSearch.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseSearch.json index 72c27c6440..2564c6dd16 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseSearch.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseSearch.json @@ -18,7 +18,12 @@ "resourceType": "ClaimResponse", "id": "f-123456", "meta": { - "lastUpdated": "1970-08-01T00:00:00.000+00:00" + "lastUpdated": "1970-08-01T00:00:00.000+00:00", + "security" : [ { + "code" : "Normal", + "display" : "Normal", + "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + } ] }, "contained": [ { @@ -186,7 +191,12 @@ "resourceType": "ClaimResponse", "id": "m-654323", "meta": { - "lastUpdated": "1970-01-01T00:00:04.000+00:00" + "lastUpdated": "1970-01-01T00:00:04.000+00:00", + "security" : [ { + "code" : "Normal", + "display" : "Normal", + "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + } ] }, "contained": [ { diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseSearchPaginated.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseSearchPaginated.json index 41984fcca6..a16aa51499 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseSearchPaginated.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseSearchPaginated.json @@ -30,7 +30,12 @@ "resourceType": "ClaimResponse", "id": "m-654323", "meta": { - "lastUpdated": "1970-01-01T00:00:04.000+00:00" + "lastUpdated": "1970-01-01T00:00:04.000+00:00", + "security" : [ { + "code" : "Normal", + "display" : "Normal", + "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + } ] }, "contained": [ { diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearch.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearch.json index c664387ec7..ae69be96f9 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearch.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearch.json @@ -18,7 +18,12 @@ "resourceType": "Claim", "id": "f-123456", "meta": { - "lastUpdated": "1970-08-01T00:00:00.000+00:00" + "lastUpdated": "1970-08-01T00:00:00.000+00:00", + "security" : [ { + "code" : "Normal", + "display" : "Normal", + "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + } ] }, "contained": [ { @@ -492,7 +497,12 @@ "resourceType": "Claim", "id": "m-654323", "meta": { - "lastUpdated": "1970-01-01T00:00:04.000+00:00" + "lastUpdated": "1970-01-01T00:00:04.000+00:00", + "security" : [ { + "code" : "Normal", + "display" : "Normal", + "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + } ] }, "contained": [ { diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearchPaginated.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearchPaginated.json index 020913b3a5..b56383fc2f 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearchPaginated.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearchPaginated.json @@ -30,7 +30,12 @@ "resourceType": "Claim", "id": "m-654323", "meta": { - "lastUpdated": "1970-01-01T00:00:04.000+00:00" + "lastUpdated": "1970-01-01T00:00:04.000+00:00", + "security" : [ { + "code" : "Normal", + "display" : "Normal", + "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + } ] }, "contained": [ { diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearchWithTaxNumbers.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearchWithTaxNumbers.json index d07062b3c5..1a4611ebe0 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearchWithTaxNumbers.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearchWithTaxNumbers.json @@ -18,7 +18,12 @@ "resourceType": "Claim", "id": "f-123456", "meta": { - "lastUpdated": "1970-08-01T00:00:00.000+00:00" + "lastUpdated": "1970-08-01T00:00:00.000+00:00", + "security" : [ { + "code" : "Normal", + "display" : "Normal", + "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + } ] }, "contained": [ { @@ -505,7 +510,12 @@ "resourceType": "Claim", "id": "m-654323", "meta": { - "lastUpdated": "1970-01-01T00:00:04.000+00:00" + "lastUpdated": "1970-01-01T00:00:04.000+00:00", + "security" : [ { + "code" : "Normal", + "display" : "Normal", + "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + } ] }, "contained": [ { From 46093ca1c3c9292c05393933f1253b031426a3a1 Mon Sep 17 00:00:00 2001 From: MahiFentaye <168698136+MahiFentaye@users.noreply.github.com> Date: Mon, 6 Jan 2025 17:29:50 -0500 Subject: [PATCH 06/13] BFD-3665 moving security tag check to before building transformClaim BFD-3665 moving security tag check to before building transformClaim --- .../r4/providers/CarrierClaimTransformerV2.java | 13 ++++++++----- .../war/r4/providers/DMEClaimTransformerV2.java | 15 +++++++++------ .../war/r4/providers/HHAClaimTransformerV2.java | 13 +++++++------ .../r4/providers/HospiceClaimTransformerV2.java | 13 +++++++------ .../providers/InpatientClaimTransformerV2.java | 15 ++++++++------- .../providers/OutpatientClaimTransformerV2.java | 14 ++++++++------ .../war/r4/providers/SNFClaimTransformerV2.java | 13 +++++++------ .../pac/FissClaimResponseTransformerV2.java | 12 ++++++------ .../r4/providers/pac/FissClaimTransformerV2.java | 14 ++++++++------ .../pac/McsClaimResponseTransformerV2.java | 13 +++++++------ .../r4/providers/pac/McsClaimTransformerV2.java | 16 ++++++++++------ .../stu3/providers/CarrierClaimTransformer.java | 16 +++++++++------- .../war/stu3/providers/DMEClaimTransformer.java | 14 ++++++++------ .../war/stu3/providers/HHAClaimTransformer.java | 13 +++++++------ .../stu3/providers/HospiceClaimTransformer.java | 13 +++++++------ .../providers/InpatientClaimTransformer.java | 15 ++++++++------- .../providers/OutpatientClaimTransformer.java | 13 +++++++------ .../war/stu3/providers/SNFClaimTransformer.java | 13 +++++++------ 18 files changed, 138 insertions(+), 110 deletions(-) diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java index d7f8724906..d7eba1a432 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java @@ -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; } @@ -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") diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java index 5e92059a8d..52ff7083b2 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java @@ -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); } /** @@ -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; } @@ -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") diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java index ddcaf67a21..da47e59bef 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java @@ -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; } @@ -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") diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java index 2f888fd125..73ff9f0c95 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java @@ -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; } @@ -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") diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java index cbd8a42ae5..6b84320cc7 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java @@ -66,7 +66,7 @@ public InpatientClaimTransformerV2( LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); - this.lookUpSamhsaSecurityTags = lookUpSamhsaSecurityTags; + this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); } /** @@ -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; } @@ -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") diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java index 90527591ff..9bae947392 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java @@ -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; } @@ -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") diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java index 123ea2c981..10f1a5d716 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java @@ -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; } @@ -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") diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java index 7cd0b7f359..1a884488cf 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java @@ -93,7 +93,10 @@ 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); } } @@ -101,10 +104,11 @@ public ClaimResponse transform(Object claimEntity, boolean includeTaxNumbers) { * 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()); @@ -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 securityTags = new ArrayList<>(); // Create a Coding object for the security level diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java index 1158b812aa..31013c8abf 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java @@ -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); } /** @@ -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); } } @@ -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 = @@ -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 securityTags = new ArrayList<>(); // Create a Coding object for the security level diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java index cb58c8647b..f0a1ab2110 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java @@ -108,7 +108,11 @@ 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); } } @@ -116,9 +120,10 @@ public ClaimResponse transform(Object claimEntity, boolean includeTaxNumbers) { * 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()); @@ -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 securityTags = new ArrayList<>(); - // Create a Coding object for the security level Coding securityTagCoding = new Coding() diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java index a5a7572374..36a3ccf2c5 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java @@ -1,5 +1,7 @@ package gov.cms.bfd.server.war.r4.providers.pac; +import static java.util.Objects.requireNonNull; + import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.Timer; import com.newrelic.api.agent.Trace; @@ -83,7 +85,7 @@ public class McsClaimTransformerV2 extends AbstractTransformerV2 public McsClaimTransformerV2( MetricRegistry metricRegistry, LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { this.metricRegistry = metricRegistry; - this.lookUpSamhsaSecurityTags = lookUpSamhsaSecurityTags; + this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); } /** @@ -101,7 +103,10 @@ public Claim transform(Object claimEntity, boolean includeTaxNumbers) { } try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) { - return transformClaim((RdaMcsClaim) claimEntity, includeTaxNumbers); + RdaMcsClaim claim = (RdaMcsClaim) claimEntity; + String securityTag = + lookUpSamhsaSecurityTags.getClaimSecurityLevel(claim.getIdrClmHdIcn(), McsTag.class); + return transformClaim(claim, includeTaxNumbers, securityTag); } } @@ -110,9 +115,11 @@ public Claim transform(Object claimEntity, boolean includeTaxNumbers) { * * @param claimGroup the {@link RdaMcsClaim} to transform * @param includeTaxNumbers Indicates if tax numbers should be included in the results + * @param securityTag securityTag tag of a claim * @return a FHIR {@link Claim} resource that represents the specified {@link RdaMcsClaim} */ - private Claim transformClaim(RdaMcsClaim claimGroup, boolean includeTaxNumbers) { + private Claim transformClaim( + RdaMcsClaim claimGroup, boolean includeTaxNumbers, String securityTag) { Claim claim = new Claim(); claim.setId("m-" + claimGroup.getIdrClmHdIcn()); @@ -139,9 +146,6 @@ private Claim transformClaim(RdaMcsClaim claimGroup, boolean includeTaxNumbers) claim.setCreated(new Date()); - String claimId = claim.getId().replaceAll("\\D", ""); - String securityTag = lookUpSamhsaSecurityTags.getClaimSecurityLevel(claimId, McsTag.class); - List securityTags = new ArrayList<>(); // Create a Coding object for the security level diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformer.java index 04c1754b6a..f9e26f1c90 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformer.java @@ -68,7 +68,7 @@ public CarrierClaimTransformer( this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); this.drugCodeDisplayLookup = requireNonNull(drugCodeDisplayLookup); - this.lookUpSamhsaSecurityTags = lookUpSamhsaSecurityTags; + this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); } /** @@ -86,7 +86,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; } @@ -96,10 +100,12 @@ 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 tag of a 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(); // Common group level fields between all claim types @@ -324,10 +330,6 @@ private ExplanationOfBenefit transformClaim(CarrierClaim claimGroup, boolean inc TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); - 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") diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformer.java index 43c6384c4f..e298a45182 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformer.java @@ -79,7 +79,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; } @@ -89,10 +93,12 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) { * * @param claimGroup the {@link DMEClaim} to use * @param includeTaxNumbers whether to include tax numbers in the transformed EOB + * @param securityTag securityTag tag of a 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(); // Common group level fields between all claim types @@ -314,10 +320,6 @@ private ExplanationOfBenefit transformClaim(DMEClaim claimGroup, boolean include } TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); - 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") diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformer.java index 4e7f2bcc51..abd888c994 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformer.java @@ -78,7 +78,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; } @@ -87,10 +91,11 @@ 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 tag of a 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(); // Common group level fields between all claim types @@ -209,10 +214,6 @@ private ExplanationOfBenefit transformClaim(HHAClaim claimGroup) { TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); - 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") diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformer.java index 98db87c66a..27e37b1a1f 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformer.java @@ -76,7 +76,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; } @@ -85,10 +89,11 @@ 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 tag of a 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(); // Common group level fields between all claim types @@ -209,10 +214,6 @@ private ExplanationOfBenefit transformClaim(HospiceClaim claimGroup) { } TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); - 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") diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformer.java index f842ad76b9..8a5bff3d98 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformer.java @@ -57,7 +57,7 @@ public InpatientClaimTransformer( LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); - this.lookUpSamhsaSecurityTags = lookUpSamhsaSecurityTags; + this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); } /** @@ -75,7 +75,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; } @@ -84,10 +88,11 @@ 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 tag of a 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(); // Common group level fields between all claim types @@ -289,10 +294,6 @@ private ExplanationOfBenefit transformClaim(InpatientClaim claimGroup) { } TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); - 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") diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformer.java index 84eaa296c0..614d997b64 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformer.java @@ -79,7 +79,11 @@ 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; } @@ -88,10 +92,11 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) { * Transforms a specified {@link InpatientClaim} into a FHIR {@link ExplanationOfBenefit}. * * @param claimGroup the CCW {@link OutpatientClaim} to transform + * @param securityTag securityTag tag of a 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(); // Common group level fields between all claim types @@ -328,10 +333,6 @@ private ExplanationOfBenefit transformClaim(OutpatientClaim claimGroup) { } TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); - 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") diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformer.java index daf02517a1..a70376119a 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformer.java @@ -80,7 +80,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; } @@ -89,10 +93,11 @@ 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 tag of a 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(); // Common group level fields between all claim types @@ -251,10 +256,6 @@ private ExplanationOfBenefit transformClaim(SNFClaim claimGroup) { } TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); - 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") From 71e760b0865562c85a79f302f9e7d1612b461012 Mon Sep 17 00:00:00 2001 From: MahiFentaye <168698136+MahiFentaye@users.noreply.github.com> Date: Tue, 14 Jan 2025 15:43:39 -0500 Subject: [PATCH 07/13] BFD-3665 BFD-3665 security tag output updated renamed class to SecurityTagManager and updated code and unit tests --- .../war/commons/LookUpSamhsaSecurityTags.java | 77 --------- .../war/commons/SecurityTagManager.java | 147 ++++++++++++++++++ .../providers/CarrierClaimTransformerV2.java | 30 ++-- .../r4/providers/DMEClaimTransformerV2.java | 30 ++-- .../r4/providers/HHAClaimTransformerV2.java | 31 ++-- .../providers/HospiceClaimTransformerV2.java | 31 ++-- .../InpatientClaimTransformerV2.java | 30 ++-- .../OutpatientClaimTransformerV2.java | 31 ++-- .../r4/providers/SNFClaimTransformerV2.java | 30 ++-- .../pac/FissClaimResponseTransformerV2.java | 33 ++-- .../providers/pac/FissClaimTransformerV2.java | 39 ++--- .../pac/McsClaimResponseTransformerV2.java | 33 ++-- .../providers/pac/McsClaimTransformerV2.java | 40 ++--- .../providers/CarrierClaimTransformer.java | 30 ++-- .../stu3/providers/DMEClaimTransformer.java | 31 ++-- .../stu3/providers/HHAClaimTransformer.java | 30 ++-- .../providers/HospiceClaimTransformer.java | 31 ++-- .../providers/InpatientClaimTransformer.java | 32 ++-- .../providers/OutpatientClaimTransformer.java | 31 ++-- .../stu3/providers/SNFClaimTransformer.java | 30 ++-- .../CarrierClaimTransformerV2Test.java | 6 +- .../providers/DMEClaimTransformerV2Test.java | 6 +- .../providers/HHAClaimTransformerV2Test.java | 6 +- .../HospiceClaimTransformerV2Test.java | 6 +- .../InpatientClaimTransformerV2Test.java | 6 +- .../OutpatientClaimTransformerV2Test.java | 6 +- ...PatientClaimsEobTaskTransformerV2Test.java | 41 ++--- .../providers/SNFClaimTransformerV2Test.java | 6 +- ...saMatcherR4FromClaimTransformerV2Test.java | 18 +-- .../r4/providers/TransformerTestUtilsV2.java | 20 +-- .../r4/providers/TransformerUtilsV2Test.java | 16 +- .../pac/FissClaimTransformerV2Test.java | 6 +- .../pac/McsClaimTransformerV2Test.java | 6 +- .../R4ClaimSamhsaMatcherTransformerTest.java | 17 +- .../CarrierClaimTransformerTest.java | 8 +- .../providers/DMEClaimTransformerTest.java | 8 +- .../providers/HHAClaimTransformerTest.java | 8 +- .../HospiceClaimTransformerTest.java | 8 +- .../InpatientClaimTransformerTest.java | 8 +- .../OutpatientClaimTransformerTest.java | 6 +- .../PatientClaimsEobTaskTransformerTest.java | 37 ++--- .../providers/SNFClaimTransformerTest.java | 8 +- ...SamhsaMatcherFromClaimTransformerTest.java | 21 ++- ...sTest.java => SecurityTagManagerTest.java} | 24 +-- .../providers/Stu3EobSamhsaMatcherTest.java | 12 +- .../stu3/providers/TransformerTestUtils.java | 20 +-- .../stu3/providers/TransformerUtilsTest.java | 16 +- .../endpoint-responses/v2/claimFissRead.json | 4 +- .../v2/claimFissReadWithTaxNumbers.json | 4 +- .../endpoint-responses/v2/claimMcsRead.json | 4 +- .../v2/claimMcsReadWithTaxNumbers.json | 4 +- .../v2/claimResponseFissRead.json | 4 +- .../v2/claimResponseMcsRead.json | 4 +- .../v2/claimResponseSearch.json | 8 +- .../v2/claimResponseSearchPaginated.json | 4 +- .../endpoint-responses/v2/claimSearch.json | 8 +- .../v2/claimSearchPaginated.json | 4 +- .../v2/claimSearchWithTaxNumbers.json | 8 +- 58 files changed, 587 insertions(+), 616 deletions(-) delete mode 100644 apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/LookUpSamhsaSecurityTags.java create mode 100644 apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/SecurityTagManager.java rename apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/{LookUpSamhsaSecurityTagsTest.java => SecurityTagManagerTest.java} (76%) diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/LookUpSamhsaSecurityTags.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/LookUpSamhsaSecurityTags.java deleted file mode 100644 index 6c0b13207a..0000000000 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/LookUpSamhsaSecurityTags.java +++ /dev/null @@ -1,77 +0,0 @@ -package gov.cms.bfd.server.war.commons; - -import jakarta.persistence.EntityManager; -import jakarta.persistence.PersistenceContext; -import jakarta.persistence.Query; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import org.springframework.stereotype.Service; - -/** Find security level. */ -@Service -public final class LookUpSamhsaSecurityTags { - - /** The Entity manager. */ - private EntityManager entityManager; - - /** - * Sets the {@link #entityManager}. - * - * @param entityManager a JPA {@link EntityManager} connected to the application's database - */ - @PersistenceContext - public void setEntityManager(EntityManager entityManager) { - this.entityManager = entityManager; - } - - /** - * Query tags for a specific claim from a specific table. - * - * @param claimId the name of the variable - * @param tagClass the name of the tag class - * @return queryTagsForClaim - */ - private Set queryTagsForClaim(String claimId, Class tagClass) { - - String sql = "SELECT t.code FROM " + tagClass.getSimpleName() + " t WHERE t.claim = :claim"; - - Query query = entityManager.createQuery(sql); - query.setParameter("claim", claimId); - - @SuppressWarnings("unchecked") - List resultList = query.getResultList(); - - return new HashSet<>(resultList); - } - - /** - * Determines the security level based on the collected tags. - * - * @param securityTags value of securityTags - * @return SecurityLevel - */ - private String determineSecurityLevel(Set securityTags) { - // Define the rules for security levels based on tag codes - for (String tag : securityTags) { - if ("R".equals(tag) || "42CFRPart2".equals(tag)) { - return "Restricted"; // Sensitive data - } - } - - // Default to 'Normal' if no sensitive tags are found - return "Normal"; - } - - /** - * Determines the security level based on the collected tags. - * - * @param claimId value of claimId - * @param tagClass value of tagClass - * @return SecurityLevel - */ - public String getClaimSecurityLevel(String claimId, Class tagClass) { - - return determineSecurityLevel(queryTagsForClaim(claimId, tagClass)); - } -} diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/SecurityTagManager.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/SecurityTagManager.java new file mode 100644 index 0000000000..f8dde514f6 --- /dev/null +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/SecurityTagManager.java @@ -0,0 +1,147 @@ +package gov.cms.bfd.server.war.commons; + +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; +import jakarta.persistence.Query; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.hl7.fhir.r4.model.Coding; +import org.springframework.stereotype.Service; + +/** Find security level. */ +@Service +public final class SecurityTagManager { + + /** The Entity manager. */ + private EntityManager entityManager; + + /** + * Sets the {@link #entityManager}. + * + * @param entityManager a JPA {@link EntityManager} connected to the application's database + */ + @PersistenceContext + public void setEntityManager(EntityManager entityManager) { + this.entityManager = entityManager; + } + + /** + * Query tags for a specific claim from a specific table. + * + * @param claimId the name of the variable + * @param tagClass the name of the tag class + * @return queryTagsForClaim + */ + private Set queryTagsForClaim(String claimId, Class tagClass) { + + String sql = "SELECT t.code FROM " + tagClass.getSimpleName() + " t WHERE t.claim = :claim"; + + Query query = entityManager.createQuery(sql); + query.setParameter("claim", claimId); + + @SuppressWarnings("unchecked") + List resultList = query.getResultList(); + + return new HashSet<>(resultList); + } + + /** + * Determines the security level based on the collected tags. + * + * @param securityTags value of securityTags + * @return SecurityLevel + */ + private String determineSecurityLevel(Set securityTags) { + // Define the rules for security levels based on tag codes + for (String tag : securityTags) { + if ("R".equals(tag) || "42CFRPart2".equals(tag)) { + return "Restricted"; // Sensitive data + } + } + + // Default to 'Normal' if no sensitive tags are found + return "Normal"; + } + + /** + * Determines the security level based on the collected tags. + * + * @param claimId value of claimId + * @param tagClass value of tagClass + * @return SecurityLevel + */ + public List getClaimSecurityLevel(String claimId, Class tagClass) { + + // Query tags associated with the claim + List securityTags = queryTagsForClaim(claimId, tagClass).stream().toList(); + + List securityTagCoding = new ArrayList<>(); + + // If no security tags are found, directly add the default "Normal" tag + if (securityTags.isEmpty()) { + Coding coding = new Coding(); + coding + .setSystem("http://terminology.hl7.org/CodeSystem/v3-Confidentiality") + .setCode("N") + .setDisplay("Normal"); + securityTagCoding.add(coding); + } else { + // Check for each tag and set corresponding code and display + for (String securityTag : securityTags) { + Coding coding = new Coding(); + + // Check each security tag and apply corresponding values + switch (securityTag) { + case "R": + coding + .setSystem("http://terminology.hl7.org/CodeSystem/v3-Confidentiality") + .setCode("R") + .setDisplay("Restricted"); + break; + case "42CFRPart2": + coding + .setSystem("http://terminology.hl7.org/CodeSystem/v3-ActCode") + .setCode("42CFRPart2") + .setDisplay("Substance Use Disorder (SAMHSA)"); + break; + + default: + coding + .setSystem("http://terminology.hl7.org/CodeSystem/v3-Confidentiality") + .setCode("N") // Default to 'Normal' if unrecognized + .setDisplay("Normal"); + } + + securityTagCoding.add(coding); + } + } + + return securityTagCoding; + } + + /** + * Determines the security level based on the collected tags. + * + * @param claimId value of claimId + * @param tagClass value of tagClass + * @return SecurityLevel + */ + public List getClaimSecurityLevelDstu3( + String claimId, Class tagClass) { + + List securityTagCoding = new ArrayList<>(); + List coding = getClaimSecurityLevel(claimId, tagClass); + for (Coding code : coding) { + org.hl7.fhir.dstu3.model.Coding securityTag = new org.hl7.fhir.dstu3.model.Coding(); + securityTag + .setSystem("http://terminology.hl7.org/CodeSystem/v3-Confidentiality") + .setCode(code.getCode()) // Default to 'Normal' if unrecognized + .setDisplay(code.getDisplay()); + + securityTagCoding.add(securityTag); + } + return securityTagCoding; + } +} diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java index d7eba1a432..9214b19d7c 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java @@ -14,17 +14,19 @@ import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.Diagnosis; import gov.cms.bfd.server.war.commons.Diagnosis.DiagnosisLabel; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.carin.C4BBAdjudication; import gov.cms.bfd.server.war.commons.carin.C4BBClaimProfessionalAndNonClinicianCareTeamRole; import gov.cms.bfd.server.war.commons.carin.C4BBPractitionerIdentifierType; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import java.math.BigDecimal; import java.util.Arrays; +import java.util.List; import java.util.Map; import java.util.Optional; +import org.hl7.fhir.r4.model.Coding; import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.CareTeamComponent; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; @@ -51,8 +53,8 @@ final class CarrierClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(CarrierClaimTransformerV2.class.getSimpleName(), "transform"); - /** Injecting lookUpSamhsaSecurityTags. */ - @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** Injecting securityTagManager. */ + @Autowired private SecurityTagManager securityTagManager; /** * Instantiates a new transformer. @@ -64,17 +66,17 @@ final class CarrierClaimTransformerV2 implements ClaimTransformerInterfaceV2 { * @param metricRegistry the metric registry * @param drugCodeDisplayLookup the drug code display lookup * @param npiOrgLookup the npi org lookup - * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup + * @param securityTagManager SamhsaSecurityTags lookup */ public CarrierClaimTransformerV2( MetricRegistry metricRegistry, FdaDrugCodeDisplayLookup drugCodeDisplayLookup, NPIOrgLookup npiOrgLookup, - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { + SecurityTagManager securityTagManager) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); this.drugCodeDisplayLookup = requireNonNull(drugCodeDisplayLookup); - this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); + this.securityTagManager = requireNonNull(securityTagManager); } /** @@ -93,10 +95,10 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) { ExplanationOfBenefit eob; try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) { CarrierClaim carrierClaim = (CarrierClaim) claim; - String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel( + List securityTags = + securityTagManager.getClaimSecurityLevel( String.valueOf(carrierClaim.getClaimId()), CarrierTag.class); - eob = transformClaim(carrierClaim, includeTaxNumber, securityTag); + eob = transformClaim(carrierClaim, includeTaxNumber, securityTags); } return eob; } @@ -106,22 +108,18 @@ 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 + * @param securityTags securityTags of the claim * @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link * CarrierClaim} */ private ExplanationOfBenefit transformClaim( - CarrierClaim claimGroup, boolean includeTaxNumbers, String securityTag) { + CarrierClaim claimGroup, boolean includeTaxNumbers, List securityTags) { ExplanationOfBenefit eob = new ExplanationOfBenefit(); // Required values not directly mapped eob.getMeta().addProfile(Profile.C4BB.getVersionedEobNonclinicianUrl()); - eob.getMeta() - .addSecurity() - .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") - .setCode(securityTag) - .setDisplay(securityTag); + eob.getMeta().setSecurity(securityTags); // TODO: ExplanationOfBenefit.outcome is a required field. Needs to be mapped. // eob.setOutcome(?) diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java index 52ff7083b2..59d055b495 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java @@ -14,16 +14,18 @@ import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.Diagnosis; import gov.cms.bfd.server.war.commons.Diagnosis.DiagnosisLabel; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.carin.C4BBAdjudication; import gov.cms.bfd.server.war.commons.carin.C4BBClaimProfessionalAndNonClinicianCareTeamRole; import gov.cms.bfd.server.war.commons.carin.C4BBPractitionerIdentifierType; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import java.util.Arrays; +import java.util.List; import java.util.Map; import java.util.Optional; +import org.hl7.fhir.r4.model.Coding; import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.CareTeamComponent; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; @@ -49,8 +51,8 @@ final class DMEClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(DMEClaimTransformerV2.class.getSimpleName(), "transform"); - /** Injecting lookUpSamhsaSecurityTags. */ - @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** Injecting securityTagManager. */ + @Autowired private SecurityTagManager securityTagManager; /** * Instantiates a new transformer. @@ -62,17 +64,17 @@ final class DMEClaimTransformerV2 implements ClaimTransformerInterfaceV2 { * @param metricRegistry the metric registry * @param drugCodeDisplayLookup the drug code display lookup * @param npiOrgLookup the npi display lookup - * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup + * @param securityTagManager SamhsaSecurityTags lookup */ DMEClaimTransformerV2( MetricRegistry metricRegistry, FdaDrugCodeDisplayLookup drugCodeDisplayLookup, NPIOrgLookup npiOrgLookup, - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { + SecurityTagManager securityTagManager) { this.metricRegistry = requireNonNull(metricRegistry); this.drugCodeDisplayLookup = requireNonNull(drugCodeDisplayLookup); this.npiOrgLookup = npiOrgLookup; - this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); + this.securityTagManager = requireNonNull(securityTagManager); } /** @@ -92,10 +94,10 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) { ExplanationOfBenefit eob; try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) { DMEClaim dmeClaim = (DMEClaim) claim; - String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel( + List securityTags = + securityTagManager.getClaimSecurityLevel( String.valueOf(dmeClaim.getClaimId()), DmeTag.class); - eob = transformClaim(dmeClaim, includeTaxNumber, securityTag); + eob = transformClaim(dmeClaim, includeTaxNumber, securityTags); } return eob; } @@ -105,22 +107,18 @@ 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 + * @param securityTags securityTags of the claim * @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link * DMEClaim} */ private ExplanationOfBenefit transformClaim( - DMEClaim claimGroup, boolean includeTaxNumbers, String securityTag) { + DMEClaim claimGroup, boolean includeTaxNumbers, List securityTags) { ExplanationOfBenefit eob = new ExplanationOfBenefit(); // Required values not directly mapped eob.getMeta().addProfile(Profile.C4BB.getVersionedEobInpatientUrl()); - eob.getMeta() - .addSecurity() - .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") - .setCode(securityTag) - .setDisplay(securityTag); + eob.getMeta().setSecurity(securityTags); // Common group level fields between all claim types // Claim Type + Claim ID => ExplanationOfBenefit.id diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java index da47e59bef..be07805fa5 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java @@ -12,16 +12,18 @@ import gov.cms.bfd.model.rif.samhsa.HhaTag; import gov.cms.bfd.server.war.commons.C4BBInstutionalClaimSubtypes; import gov.cms.bfd.server.war.commons.ClaimType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.carin.C4BBClaimProfessionalAndNonClinicianCareTeamRole; import gov.cms.bfd.server.war.commons.carin.C4BBOrganizationIdentifierType; import gov.cms.bfd.server.war.commons.carin.C4BBPractitionerIdentifierType; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import java.util.Arrays; +import java.util.List; import java.util.Map; import java.util.Optional; +import org.hl7.fhir.r4.model.Coding; import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.r4.model.Quantity; @@ -42,8 +44,8 @@ final class HHAClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(HHAClaimTransformerV2.class.getSimpleName(), "transform"); - /** Injecting lookUpSamhsaSecurityTags. */ - @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** Injecting securityTagManager. */ + @Autowired private SecurityTagManager securityTagManager; /** * Instantiates a new transformer. @@ -54,15 +56,15 @@ final class HHAClaimTransformerV2 implements ClaimTransformerInterfaceV2 { * * @param metricRegistry the metric registry * @param npiOrgLookup the npi org lookup - * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup + * @param securityTagManager SamhsaSecurityTags lookup */ public HHAClaimTransformerV2( MetricRegistry metricRegistry, NPIOrgLookup npiOrgLookup, - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { + SecurityTagManager securityTagManager) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); - this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); + this.securityTagManager = requireNonNull(securityTagManager); } /** @@ -81,10 +83,10 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) { ExplanationOfBenefit eob; try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) { HHAClaim hhaClaim = (HHAClaim) claim; - String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel( + List securityTags = + securityTagManager.getClaimSecurityLevel( String.valueOf(hhaClaim.getClaimId()), HhaTag.class); - eob = transformClaim(hhaClaim, securityTag); + eob = transformClaim(hhaClaim, securityTags); } return eob; } @@ -93,20 +95,17 @@ 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 + * @param securityTags securityTags of the claim * @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link * HHAClaim} */ - private ExplanationOfBenefit transformClaim(HHAClaim claimGroup, String securityTag) { + private ExplanationOfBenefit transformClaim(HHAClaim claimGroup, List securityTags) { ExplanationOfBenefit eob = new ExplanationOfBenefit(); // Required values not directly mapped eob.getMeta().addProfile(Profile.C4BB.getVersionedEobNonclinicianUrl()); - eob.getMeta() - .addSecurity() - .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") - .setCode(securityTag) - .setDisplay(securityTag); + eob.getMeta().setSecurity(securityTags); + // Common group level fields between all claim types // Claim Type + Claim ID => ExplanationOfBenefit.id // CLM_ID => ExplanationOfBenefit.identifier diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java index 73ff9f0c95..1e21cc3eb6 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java @@ -12,17 +12,19 @@ import gov.cms.bfd.model.rif.samhsa.HospiceTag; import gov.cms.bfd.server.war.commons.C4BBInstutionalClaimSubtypes; import gov.cms.bfd.server.war.commons.ClaimType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.carin.C4BBAdjudication; import gov.cms.bfd.server.war.commons.carin.C4BBClaimInstitutionalCareTeamRole; import gov.cms.bfd.server.war.commons.carin.C4BBOrganizationIdentifierType; import gov.cms.bfd.server.war.commons.carin.C4BBPractitionerIdentifierType; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import java.util.Arrays; +import java.util.List; import java.util.Map; import java.util.Optional; +import org.hl7.fhir.r4.model.Coding; import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; import org.springframework.beans.factory.annotation.Autowired; @@ -44,8 +46,8 @@ final class HospiceClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(HospiceClaimTransformerV2.class.getSimpleName(), "transform"); - /** Injecting lookUpSamhsaSecurityTags. */ - @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** Injecting securityTagManager. */ + @Autowired private SecurityTagManager securityTagManager; /** * Instantiates a new transformer. @@ -56,15 +58,15 @@ final class HospiceClaimTransformerV2 implements ClaimTransformerInterfaceV2 { * * @param metricRegistry the metric registry * @param npiOrgLookup the npi org lookup - * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup + * @param securityTagManager SamhsaSecurityTags lookup */ public HospiceClaimTransformerV2( MetricRegistry metricRegistry, NPIOrgLookup npiOrgLookup, - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { + SecurityTagManager securityTagManager) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); - this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); + this.securityTagManager = requireNonNull(securityTagManager); } /** @@ -83,10 +85,10 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) { ExplanationOfBenefit eob; try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) { HospiceClaim hospiceClaim = (HospiceClaim) claim; - String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel( + List securityTags = + securityTagManager.getClaimSecurityLevel( String.valueOf(hospiceClaim.getClaimId()), HospiceTag.class); - eob = transformClaim(hospiceClaim, securityTag); + eob = transformClaim(hospiceClaim, securityTags); } return eob; } @@ -95,20 +97,17 @@ 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 + * @param securityTags securityTags of the claim * @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link * HospiceClaim} */ - private ExplanationOfBenefit transformClaim(HospiceClaim claimGroup, String securityTag) { + private ExplanationOfBenefit transformClaim(HospiceClaim claimGroup, List securityTags) { ExplanationOfBenefit eob = new ExplanationOfBenefit(); // Required values not directly mapped eob.getMeta().addProfile(Profile.C4BB.getVersionedEobInpatientUrl()); - eob.getMeta() - .addSecurity() - .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") - .setCode(securityTag) - .setDisplay(securityTag); + eob.getMeta().setSecurity(securityTags); + // Common group level fields between all claim types // Claim Type + Claim ID => ExplanationOfBenefit.id // CLM_ID => ExplanationOfBenefit.identifier diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java index 6b84320cc7..43a666a302 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java @@ -13,15 +13,16 @@ import gov.cms.bfd.server.war.commons.C4BBInstutionalClaimSubtypes; import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.ClaimType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.commons.carin.C4BBClaimInstitutionalCareTeamRole; import gov.cms.bfd.server.war.commons.carin.C4BBOrganizationIdentifierType; import gov.cms.bfd.server.war.commons.carin.C4BBPractitionerIdentifierType; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import java.util.Arrays; +import java.util.List; import java.util.Optional; import org.hl7.fhir.r4.model.CodeableConcept; import org.hl7.fhir.r4.model.Coding; @@ -46,8 +47,8 @@ final class InpatientClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(InpatientClaimTransformerV2.class.getSimpleName(), "transform"); - /** Injecting lookUpSamhsaSecurityTags. */ - @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** Injecting securityTagManager. */ + @Autowired private SecurityTagManager securityTagManager; /** * Instantiates a new transformer. @@ -58,15 +59,15 @@ final class InpatientClaimTransformerV2 implements ClaimTransformerInterfaceV2 { * * @param metricRegistry the metric registry * @param npiOrgLookup the npi org lookup - * @param lookUpSamhsaSecurityTags SamhsaSecurityTag lookup + * @param securityTagManager SamhsaSecurityTag lookup */ public InpatientClaimTransformerV2( MetricRegistry metricRegistry, NPIOrgLookup npiOrgLookup, - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { + SecurityTagManager securityTagManager) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); - this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); + this.securityTagManager = requireNonNull(securityTagManager); } /** @@ -86,10 +87,10 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) { ExplanationOfBenefit eob; try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) { InpatientClaim inpatientClaim = (InpatientClaim) claim; - String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel( + List securityTags = + securityTagManager.getClaimSecurityLevel( String.valueOf(inpatientClaim.getClaimId()), InpatientTag.class); - eob = transformClaim(inpatientClaim, securityTag); + eob = transformClaim(inpatientClaim, securityTags); } return eob; } @@ -98,20 +99,17 @@ 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 + * @param securityTags securityTags of the claim * @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link * InpatientClaim} */ - private ExplanationOfBenefit transformClaim(InpatientClaim claimGroup, String securityTag) { + private ExplanationOfBenefit transformClaim( + InpatientClaim claimGroup, List securityTags) { ExplanationOfBenefit eob = new ExplanationOfBenefit(); // Required values not directly mapped eob.getMeta().addProfile(Profile.C4BB.getVersionedEobInpatientUrl()); - eob.getMeta() - .addSecurity() - .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") - .setCode(securityTag) - .setDisplay(securityTag); + eob.getMeta().setSecurity(securityTags); // Common group level fields between all claim types // Claim Type + Claim ID => ExplanationOfBenefit.id diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java index 9bae947392..45d0617078 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java @@ -14,17 +14,19 @@ import gov.cms.bfd.model.rif.samhsa.OutpatientTag; import gov.cms.bfd.server.war.commons.C4BBInstutionalClaimSubtypes; import gov.cms.bfd.server.war.commons.ClaimType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.carin.C4BBAdjudication; import gov.cms.bfd.server.war.commons.carin.C4BBClaimInstitutionalCareTeamRole; import gov.cms.bfd.server.war.commons.carin.C4BBOrganizationIdentifierType; import gov.cms.bfd.server.war.commons.carin.C4BBPractitionerIdentifierType; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import java.util.Arrays; +import java.util.List; import java.util.Map; import java.util.Optional; +import org.hl7.fhir.r4.model.Coding; import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; import org.springframework.beans.factory.annotation.Autowired; @@ -50,8 +52,8 @@ final class OutpatientClaimTransformerV2 implements ClaimTransformerInterfaceV2 private static final String METRIC_NAME = MetricRegistry.name(OutpatientClaimTransformerV2.class.getSimpleName(), "transform"); - /** Injecting lookUpSamhsaSecurityTags. */ - @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** Injecting securityTagManager. */ + @Autowired private SecurityTagManager securityTagManager; /** * Instantiates a new transformer. @@ -63,17 +65,17 @@ final class OutpatientClaimTransformerV2 implements ClaimTransformerInterfaceV2 * @param metricRegistry the metric registry * @param drugCodeDisplayLookup the drug code display lookup * @param npiOrgLookup the npi org lookup - * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup + * @param securityTagManager SamhsaSecurityTags lookup */ public OutpatientClaimTransformerV2( MetricRegistry metricRegistry, FdaDrugCodeDisplayLookup drugCodeDisplayLookup, NPIOrgLookup npiOrgLookup, - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { + SecurityTagManager securityTagManager) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); this.drugCodeDisplayLookup = requireNonNull(drugCodeDisplayLookup); - this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); + this.securityTagManager = requireNonNull(securityTagManager); } /** @@ -94,10 +96,10 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) { try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) { OutpatientClaim outpatientClaim = (OutpatientClaim) claim; - String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel( + List securityTags = + securityTagManager.getClaimSecurityLevel( String.valueOf(outpatientClaim.getClaimId()), OutpatientTag.class); - eob = transformClaim(outpatientClaim, securityTag); + eob = transformClaim(outpatientClaim, securityTags); } return eob; } @@ -106,20 +108,17 @@ 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 + * @param securityTags securityTags of the claim * @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link * OutpatientClaim} */ - private ExplanationOfBenefit transformClaim(OutpatientClaim claimGroup, String securityTag) { + private ExplanationOfBenefit transformClaim( + OutpatientClaim claimGroup, List securityTags) { ExplanationOfBenefit eob = new ExplanationOfBenefit(); // Required values not directly mapped eob.getMeta().addProfile(Profile.C4BB.getVersionedEobOutpatientUrl()); - eob.getMeta() - .addSecurity() - .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") - .setCode(securityTag) - .setDisplay(securityTag); + eob.getMeta().setSecurity(securityTags); // Common group level fields between all claim types // Claim Type + Claim ID => ExplanationOfBenefit.id diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java index 10f1a5d716..2d0480a025 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java @@ -14,17 +14,19 @@ import gov.cms.bfd.server.war.commons.C4BBInstutionalClaimSubtypes; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.CommonTransformerUtils; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.Profile; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.carin.C4BBClaimInstitutionalCareTeamRole; import gov.cms.bfd.server.war.commons.carin.C4BBOrganizationIdentifierType; import gov.cms.bfd.server.war.commons.carin.C4BBPractitionerIdentifierType; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import java.math.BigDecimal; import java.util.Collections; +import java.util.List; import java.util.Map; import java.util.Optional; +import org.hl7.fhir.r4.model.Coding; import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.r4.model.Period; @@ -45,8 +47,8 @@ public class SNFClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(SNFClaimTransformerV2.class.getSimpleName(), "transform"); - /** Injecting lookUpSamhsaSecurityTags. */ - @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** Injecting securityTagManager. */ + @Autowired private SecurityTagManager securityTagManager; /** * Instantiates a new transformer. @@ -57,15 +59,15 @@ public class SNFClaimTransformerV2 implements ClaimTransformerInterfaceV2 { * * @param metricRegistry the metric registry * @param npiOrgLookup the npi org lookup - * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup + * @param securityTagManager SamhsaSecurityTags lookup */ public SNFClaimTransformerV2( MetricRegistry metricRegistry, NPIOrgLookup npiOrgLookup, - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { + SecurityTagManager securityTagManager) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); - this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); + this.securityTagManager = requireNonNull(securityTagManager); } /** @@ -85,10 +87,10 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) { ExplanationOfBenefit eob; try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) { SNFClaim snfClaim = (SNFClaim) claim; - String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel( + List securityTags = + securityTagManager.getClaimSecurityLevel( String.valueOf(snfClaim.getClaimId()), SnfTag.class); - eob = transformClaim(snfClaim, securityTag); + eob = transformClaim(snfClaim, securityTags); } return eob; } @@ -97,20 +99,16 @@ 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 + * @param securityTags securityTags of the claim * @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link * SNFClaim} */ - private ExplanationOfBenefit transformClaim(SNFClaim claimGroup, String securityTag) { + private ExplanationOfBenefit transformClaim(SNFClaim claimGroup, List securityTags) { ExplanationOfBenefit eob = new ExplanationOfBenefit(); // Required values not directly mapped eob.getMeta().addProfile(Profile.C4BB.getVersionedEobInpatientUrl()); - eob.getMeta() - .addSecurity() - .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") - .setCode(securityTag) - .setDisplay(securityTag); + eob.getMeta().setSecurity(securityTags); // Common group level fields between all claim types // Claim Type + Claim ID => ExplanationOfBenefit.id diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java index 1a884488cf..b63df299df 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java @@ -9,7 +9,7 @@ import gov.cms.bfd.model.rda.entities.RdaFissRevenueLine; import gov.cms.bfd.model.rda.samhsa.FissTag; import gov.cms.bfd.server.war.commons.BBCodingSystems; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.carin.C4BBAdjudicationDiscriminator; import gov.cms.bfd.server.war.r4.providers.pac.common.AbstractTransformerV2; import gov.cms.bfd.server.war.r4.providers.pac.common.FissTransformerV2; @@ -44,8 +44,8 @@ public class FissClaimResponseTransformerV2 extends AbstractTransformerV2 private static final String METRIC_NAME = MetricRegistry.name(FissClaimResponseTransformerV2.class.getSimpleName(), "transform"); - /** Injecting lookUpSamhsaSecurityTags. */ - @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** Injecting securityTagManager. */ + @Autowired private SecurityTagManager securityTagManager; /** * The known FISS status codes and their associated {@link ClaimResponse.RemittanceOutcome} @@ -94,9 +94,9 @@ public ClaimResponse transform(Object claimEntity, boolean includeTaxNumbers) { try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) { RdaFissClaim rdaFissClaim = (RdaFissClaim) claimEntity; - String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel(rdaFissClaim.getClaimId(), FissTag.class); - return transformClaim(rdaFissClaim, securityTag); + List securityTags = + securityTagManager.getClaimSecurityLevel(rdaFissClaim.getClaimId(), FissTag.class); + return transformClaim(rdaFissClaim, securityTags); } } @@ -104,11 +104,11 @@ public ClaimResponse transform(Object claimEntity, boolean includeTaxNumbers) { * Transforms an {@link RdaFissClaim} to a FHIR {@link ClaimResponse}. * * @param claimGroup the {@link RdaFissClaim} to transform - * @param securityTag securityTag of the claim + * @param securityTags securityTags of the claim * @return a FHIR {@link ClaimResponse} resource that represents the specified {@link * RdaFissClaim} */ - private ClaimResponse transformClaim(RdaFissClaim claimGroup, String securityTag) { + private ClaimResponse transformClaim(RdaFissClaim claimGroup, List securityTags) { ClaimResponse claim = new ClaimResponse(); claim.setId("f-" + claimGroup.getClaimId()); @@ -124,20 +124,11 @@ private ClaimResponse transformClaim(RdaFissClaim claimGroup, String securityTag claim.setRequest(new Reference(String.format("Claim/f-%s", claimGroup.getClaimId()))); claim.setItem(getClaimItems(claimGroup)); - List securityTags = new ArrayList<>(); - - // Create a Coding object for the security level - Coding securityTagCoding = - new Coding() - .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") - .setCode(securityTag) - .setDisplay(securityTag); - // Add the Coding to the list - securityTags.add(securityTagCoding); - Meta meta = new Meta(); - claim.setMeta(meta.setSecurity(securityTags)); - claim.setMeta(meta.setLastUpdated(Date.from(claimGroup.getLastUpdated()))); + Meta meta = + new Meta().setSecurity(securityTags).setLastUpdated(Date.from(claimGroup.getLastUpdated())); + + claim.setMeta(meta); claim.setCreated(new Date()); return claim; diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java index 31013c8abf..b43867ad6a 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java @@ -15,7 +15,7 @@ import gov.cms.bfd.server.war.commons.BBCodingSystems; import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.IcdCode; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.commons.carin.C4BBOrganizationIdentifierType; import gov.cms.bfd.server.war.commons.carin.C4BBSupportingInfoType; @@ -65,8 +65,8 @@ public class FissClaimTransformerV2 extends AbstractTransformerV2 /** The Metric registry. */ private final MetricRegistry metricRegistry; - /** Injecting lookUpSamhsaSecurityTags. */ - @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** Injecting securityTagManager. */ + @Autowired private SecurityTagManager securityTagManager; /** The METRIC_NAME constant. */ private static final String METRIC_NAME = @@ -80,12 +80,12 @@ public class FissClaimTransformerV2 extends AbstractTransformerV2 * called by tests. * * @param metricRegistry the metric registry - * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup + * @param securityTagManager SamhsaSecurityTags lookup */ public FissClaimTransformerV2( - MetricRegistry metricRegistry, LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { + MetricRegistry metricRegistry, SecurityTagManager securityTagManager) { this.metricRegistry = requireNonNull(metricRegistry); - this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); + this.securityTagManager = requireNonNull(securityTagManager); } /** @@ -103,9 +103,9 @@ public Claim transform(Object claimEntity, boolean includeTaxNumbers) { try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) { RdaFissClaim rdaFissClaim = (RdaFissClaim) claimEntity; - String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel(rdaFissClaim.getClaimId(), FissTag.class); - return transformClaim(rdaFissClaim, includeTaxNumbers, securityTag); + List securityTags = + securityTagManager.getClaimSecurityLevel(rdaFissClaim.getClaimId(), FissTag.class); + return transformClaim(rdaFissClaim, includeTaxNumbers, securityTags); } } @@ -114,11 +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 + * @param securityTags securityTags of the claim * @return a FHIR {@link Claim} resource that represents the specified {@link RdaFissClaim} */ private Claim transformClaim( - RdaFissClaim claimGroup, boolean includeTaxNumbers, String securityTag) { + RdaFissClaim claimGroup, boolean includeTaxNumbers, List securityTags) { Claim claim = new Claim(); boolean isIcd9 = @@ -149,20 +149,9 @@ private Claim transformClaim( claim.setInsurance(getInsurance(claimGroup)); claim.setItem(getClaimItems(claimGroup)); - List securityTags = new ArrayList<>(); - - // Create a Coding object for the security level - Coding securityTagCoding = - new Coding() - .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") - .setCode(securityTag) - .setDisplay(securityTag); - - // Add the Coding to the list - securityTags.add(securityTagCoding); - Meta meta = new Meta(); - claim.setMeta(meta.setSecurity(securityTags)); - claim.setMeta(meta.setLastUpdated(Date.from(claimGroup.getLastUpdated()))); + Meta meta = + new Meta().setSecurity(securityTags).setLastUpdated(Date.from(claimGroup.getLastUpdated())); + claim.setMeta(meta); claim.setCreated(new Date()); return claim; diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java index f0a1ab2110..fd8b6fdb8f 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java @@ -7,7 +7,7 @@ import gov.cms.bfd.model.rda.entities.RdaMcsClaim; import gov.cms.bfd.model.rda.samhsa.McsTag; import gov.cms.bfd.server.war.commons.BBCodingSystems; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.r4.providers.pac.common.AbstractTransformerV2; import gov.cms.bfd.server.war.r4.providers.pac.common.McsTransformerV2; import gov.cms.bfd.server.war.r4.providers.pac.common.ResourceTransformer; @@ -39,8 +39,8 @@ public class McsClaimResponseTransformerV2 extends AbstractTransformerV2 private static final String METRIC_NAME = MetricRegistry.name(McsClaimResponseTransformerV2.class.getSimpleName(), "transform"); - /** Injecting lookUpSamhsaSecurityTags. */ - @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** Injecting securityTagManager. */ + @Autowired private SecurityTagManager securityTagManager; /** * There are only 2 statuses currently being used, and only the ones listed below are mapped to @@ -109,10 +109,9 @@ public ClaimResponse transform(Object claimEntity, boolean includeTaxNumbers) { try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) { RdaMcsClaim rdaMcsClaim = (RdaMcsClaim) claimEntity; - String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel( - rdaMcsClaim.getIdrClmHdIcn(), McsTag.class); - return transformClaim(rdaMcsClaim, securityTag); + List securityTags = + securityTagManager.getClaimSecurityLevel(rdaMcsClaim.getIdrClmHdIcn(), McsTag.class); + return transformClaim(rdaMcsClaim, securityTags); } } @@ -120,10 +119,10 @@ public ClaimResponse transform(Object claimEntity, boolean includeTaxNumbers) { * Transforms a {@link RdaMcsClaim} into a FHIR {@link Claim}. * * @param claimGroup the {@link RdaMcsClaim} to transform - * @param securityTag securityTag of the claim + * @param securityTags securityTags of the claim * @return a FHIR {@link ClaimResponse} resource that represents the specified {@link RdaMcsClaim} */ - private ClaimResponse transformClaim(RdaMcsClaim claimGroup, String securityTag) { + private ClaimResponse transformClaim(RdaMcsClaim claimGroup, List securityTags) { ClaimResponse claim = new ClaimResponse(); claim.setId("m-" + claimGroup.getIdrClmHdIcn()); @@ -140,19 +139,9 @@ private ClaimResponse transformClaim(RdaMcsClaim claimGroup, String securityTag) claim.setPatient(new Reference("#patient")); claim.setRequest(new Reference(String.format("Claim/m-%s", claimGroup.getIdrClmHdIcn()))); - List securityTags = new ArrayList<>(); - // Create a Coding object for the security level - Coding securityTagCoding = - new Coding() - .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") - .setCode(securityTag) - .setDisplay(securityTag); - - // Add the Coding to the list - securityTags.add(securityTagCoding); - Meta meta = new Meta(); - claim.setMeta(meta.setSecurity(securityTags)); - claim.setMeta(meta.setLastUpdated(Date.from(claimGroup.getLastUpdated()))); + Meta meta = + new Meta().setSecurity(securityTags).setLastUpdated(Date.from(claimGroup.getLastUpdated())); + claim.setMeta(meta); claim.setCreated(new Date()); return claim; diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java index 36a3ccf2c5..d45f7d0daf 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java @@ -11,7 +11,7 @@ import gov.cms.bfd.model.rda.samhsa.McsTag; import gov.cms.bfd.server.war.commons.BBCodingSystems; import gov.cms.bfd.server.war.commons.IcdCode; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.r4.providers.pac.common.AbstractTransformerV2; import gov.cms.bfd.server.war.r4.providers.pac.common.McsTransformerV2; @@ -49,8 +49,8 @@ public class McsClaimTransformerV2 extends AbstractTransformerV2 implements ResourceTransformer { - /** Injecting lookUpSamhsaSecurityTags. */ - @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** Injecting securityTagManager. */ + @Autowired private SecurityTagManager securityTagManager; /** The metric name. */ private static final String METRIC_NAME = @@ -80,12 +80,12 @@ public class McsClaimTransformerV2 extends AbstractTransformerV2 * called by tests. * * @param metricRegistry the metric registry - * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup + * @param securityTagManager SamhsaSecurityTags lookup */ public McsClaimTransformerV2( - MetricRegistry metricRegistry, LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { + MetricRegistry metricRegistry, SecurityTagManager securityTagManager) { this.metricRegistry = metricRegistry; - this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); + this.securityTagManager = requireNonNull(securityTagManager); } /** @@ -104,9 +104,9 @@ public Claim transform(Object claimEntity, boolean includeTaxNumbers) { try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) { RdaMcsClaim claim = (RdaMcsClaim) claimEntity; - String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel(claim.getIdrClmHdIcn(), McsTag.class); - return transformClaim(claim, includeTaxNumbers, securityTag); + List securityTags = + securityTagManager.getClaimSecurityLevel(claim.getIdrClmHdIcn(), McsTag.class); + return transformClaim(claim, includeTaxNumbers, securityTags); } } @@ -115,11 +115,11 @@ public Claim transform(Object claimEntity, boolean includeTaxNumbers) { * * @param claimGroup the {@link RdaMcsClaim} to transform * @param includeTaxNumbers Indicates if tax numbers should be included in the results - * @param securityTag securityTag tag of a claim + * @param securityTags securityTags tag of a claim * @return a FHIR {@link Claim} resource that represents the specified {@link RdaMcsClaim} */ private Claim transformClaim( - RdaMcsClaim claimGroup, boolean includeTaxNumbers, String securityTag) { + RdaMcsClaim claimGroup, boolean includeTaxNumbers, List securityTags) { Claim claim = new Claim(); claim.setId("m-" + claimGroup.getIdrClmHdIcn()); @@ -146,21 +146,9 @@ private Claim transformClaim( claim.setCreated(new Date()); - List securityTags = new ArrayList<>(); - - // Create a Coding object for the security level - Coding securityTagCoding = - new Coding() - .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") - .setCode(securityTag) - .setDisplay(securityTag); - - // Add the Coding to the list - securityTags.add(securityTagCoding); - Meta meta = new Meta(); - claim.setMeta(meta.setSecurity(securityTags)); - claim.setMeta(meta.setLastUpdated(Date.from(claimGroup.getLastUpdated()))); - + Meta meta = + new Meta().setSecurity(securityTags).setLastUpdated(Date.from(claimGroup.getLastUpdated())); + claim.setMeta(meta); return claim; } diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformer.java index f9e26f1c90..c2352ad173 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformer.java @@ -14,14 +14,16 @@ import gov.cms.bfd.model.rif.samhsa.CarrierTag; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.IdentifierType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import java.math.BigDecimal; import java.util.Arrays; +import java.util.List; import java.util.Map; import java.util.Optional; +import org.hl7.fhir.dstu3.model.Coding; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.dstu3.model.codesystems.ClaimCareteamrole; @@ -45,8 +47,8 @@ final class CarrierClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(CarrierClaimTransformer.class.getSimpleName(), "transform"); - /** Injecting lookUpSamhsaSecurityTags. */ - @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** Injecting securityTagManager. */ + @Autowired private SecurityTagManager securityTagManager; /** * Instantiates a new transformer. @@ -58,17 +60,17 @@ final class CarrierClaimTransformer implements ClaimTransformerInterface { * @param metricRegistry the metric registry * @param drugCodeDisplayLookup the drug code display lookup * @param npiOrgLookup the npi org lookup - * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup + * @param securityTagManager SamhsaSecurityTags lookup */ public CarrierClaimTransformer( MetricRegistry metricRegistry, FdaDrugCodeDisplayLookup drugCodeDisplayLookup, NPIOrgLookup npiOrgLookup, - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { + SecurityTagManager securityTagManager) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); this.drugCodeDisplayLookup = requireNonNull(drugCodeDisplayLookup); - this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); + this.securityTagManager = requireNonNull(securityTagManager); } /** @@ -87,10 +89,10 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) { ExplanationOfBenefit eob; try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) { CarrierClaim carrierClaim = (CarrierClaim) claim; - String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel( + List securityTags = + securityTagManager.getClaimSecurityLevelDstu3( String.valueOf(carrierClaim.getClaimId()), CarrierTag.class); - eob = transformClaim(carrierClaim, includeTaxNumber, securityTag); + eob = transformClaim(carrierClaim, includeTaxNumber, securityTags); } return eob; } @@ -100,12 +102,12 @@ 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 tag of a claim + * @param securityTags securityTags of a claim * @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link * CarrierClaim} */ private ExplanationOfBenefit transformClaim( - CarrierClaim claimGroup, boolean includeTaxNumbers, String securityTag) { + CarrierClaim claimGroup, boolean includeTaxNumbers, List securityTags) { ExplanationOfBenefit eob = new ExplanationOfBenefit(); // Common group level fields between all claim types @@ -330,11 +332,7 @@ private ExplanationOfBenefit transformClaim( TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); - eob.getMeta() - .addSecurity() - .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") - .setCode(securityTag) - .setDisplay(securityTag); + eob.getMeta().setSecurity(securityTags); return eob; } } diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformer.java index e298a45182..4b6354b262 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformer.java @@ -12,13 +12,15 @@ import gov.cms.bfd.model.rif.samhsa.DmeTag; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.IdentifierType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import java.util.Arrays; +import java.util.List; import java.util.Map; import java.util.Optional; +import org.hl7.fhir.dstu3.model.Coding; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.dstu3.model.Extension; @@ -41,8 +43,8 @@ final class DMEClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(DMEClaimTransformer.class.getSimpleName(), "transform"); - /** Injecting lookUpSamhsaSecurityTags. */ - @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** Injecting securityTagManager. */ + @Autowired private SecurityTagManager securityTagManager; /** * Instantiates a new transformer. @@ -53,15 +55,15 @@ final class DMEClaimTransformer implements ClaimTransformerInterface { * * @param metricRegistry the metric registry * @param drugCodeDisplayLookup the drug code display lookup - * @param lookUpSamhsaSecurityTags SamhsaSecurityTag lookup + * @param securityTagManager SamhsaSecurityTag lookup */ public DMEClaimTransformer( MetricRegistry metricRegistry, FdaDrugCodeDisplayLookup drugCodeDisplayLookup, - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { + SecurityTagManager securityTagManager) { this.metricRegistry = requireNonNull(metricRegistry); this.drugCodeDisplayLookup = requireNonNull(drugCodeDisplayLookup); - this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); + this.securityTagManager = requireNonNull(securityTagManager); } /** @@ -80,10 +82,10 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) { ExplanationOfBenefit eob; try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) { DMEClaim dmeClaim = (DMEClaim) claim; - String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel( + List securityTags = + securityTagManager.getClaimSecurityLevelDstu3( String.valueOf(dmeClaim.getClaimId()), DmeTag.class); - eob = transformClaim(dmeClaim, includeTaxNumber, securityTag); + eob = transformClaim(dmeClaim, includeTaxNumber, securityTags); } return eob; } @@ -93,12 +95,12 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) { * * @param claimGroup the {@link DMEClaim} to use * @param includeTaxNumbers whether to include tax numbers in the transformed EOB - * @param securityTag securityTag tag of a claim + * @param securityTags securityTags of a claim * @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link * DMEClaim} */ private ExplanationOfBenefit transformClaim( - DMEClaim claimGroup, boolean includeTaxNumbers, String securityTag) { + DMEClaim claimGroup, boolean includeTaxNumbers, List securityTags) { ExplanationOfBenefit eob = new ExplanationOfBenefit(); // Common group level fields between all claim types @@ -320,11 +322,8 @@ private ExplanationOfBenefit transformClaim( } TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); - eob.getMeta() - .addSecurity() - .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") - .setCode(securityTag) - .setDisplay(securityTag); + eob.getMeta().setSecurity(securityTags); + return eob; } } diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformer.java index abd888c994..c2c4a47f54 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformer.java @@ -12,13 +12,15 @@ import gov.cms.bfd.model.rif.entities.OutpatientClaim; import gov.cms.bfd.model.rif.samhsa.HhaTag; import gov.cms.bfd.server.war.commons.ClaimType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import java.util.Arrays; +import java.util.List; import java.util.Map; import java.util.Optional; import org.hl7.fhir.dstu3.model.Address; +import org.hl7.fhir.dstu3.model.Coding; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.BenefitComponent; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.ItemComponent; @@ -40,8 +42,8 @@ final class HHAClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(HHAClaimTransformer.class.getSimpleName(), "transform"); - /** Injecting lookUpSamhsaSecurityTags. */ - @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** Injecting securityTagManager. */ + @Autowired private SecurityTagManager securityTagManager; /** * Instantiates a new transformer. @@ -52,15 +54,15 @@ final class HHAClaimTransformer implements ClaimTransformerInterface { * * @param metricRegistry the metric registry * @param npiOrgLookup the npi org lookup - * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup + * @param securityTagManager SamhsaSecurityTags lookup */ public HHAClaimTransformer( MetricRegistry metricRegistry, NPIOrgLookup npiOrgLookup, - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { + SecurityTagManager securityTagManager) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); - this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); + this.securityTagManager = requireNonNull(securityTagManager); } /** @@ -79,10 +81,10 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) { ExplanationOfBenefit eob; try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) { HHAClaim hhaClaim = (HHAClaim) claim; - String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel( + List securityTags = + securityTagManager.getClaimSecurityLevelDstu3( String.valueOf(hhaClaim.getClaimId()), HhaTag.class); - eob = transformClaim(hhaClaim, securityTag); + eob = transformClaim(hhaClaim, securityTags); } return eob; } @@ -91,11 +93,11 @@ 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 tag of a claim + * @param securityTags securityTags tag of a claim * @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link * HHAClaim} */ - private ExplanationOfBenefit transformClaim(HHAClaim claimGroup, String securityTag) { + private ExplanationOfBenefit transformClaim(HHAClaim claimGroup, List securityTags) { ExplanationOfBenefit eob = new ExplanationOfBenefit(); // Common group level fields between all claim types @@ -214,11 +216,7 @@ private ExplanationOfBenefit transformClaim(HHAClaim claimGroup, String security TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); - eob.getMeta() - .addSecurity() - .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") - .setCode(securityTag) - .setDisplay(securityTag); + eob.getMeta().setSecurity(securityTags); return eob; } } diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformer.java index 27e37b1a1f..274d20f0ef 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformer.java @@ -11,13 +11,15 @@ import gov.cms.bfd.model.rif.entities.HospiceClaimLine; import gov.cms.bfd.model.rif.samhsa.HospiceTag; import gov.cms.bfd.server.war.commons.ClaimType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import java.util.Arrays; +import java.util.List; import java.util.Map; import java.util.Optional; import org.hl7.fhir.dstu3.model.Address; +import org.hl7.fhir.dstu3.model.Coding; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.ItemComponent; import org.springframework.beans.factory.annotation.Autowired; @@ -38,8 +40,8 @@ final class HospiceClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(HospiceClaimTransformer.class.getSimpleName(), "transform"); - /** Injecting lookUpSamhsaSecurityTags. */ - @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** Injecting securityTagManager. */ + @Autowired private SecurityTagManager securityTagManager; /** * Instantiates a new transformer. @@ -50,15 +52,15 @@ final class HospiceClaimTransformer implements ClaimTransformerInterface { * * @param metricRegistry the metric registry * @param npiOrgLookup the npi org lookup - * @param lookUpSamhsaSecurityTags lookUpSamhsaSecurityTags + * @param securityTagManager securityTagManager */ public HospiceClaimTransformer( MetricRegistry metricRegistry, NPIOrgLookup npiOrgLookup, - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { + SecurityTagManager securityTagManager) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); - this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); + this.securityTagManager = requireNonNull(securityTagManager); } /** @@ -77,10 +79,10 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) { ExplanationOfBenefit eob; try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) { HospiceClaim hospiceClaim = (HospiceClaim) claim; - String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel( + List securityTags = + securityTagManager.getClaimSecurityLevelDstu3( String.valueOf(hospiceClaim.getClaimId()), HospiceTag.class); - eob = transformClaim(hospiceClaim, securityTag); + eob = transformClaim(hospiceClaim, securityTags); } return eob; } @@ -89,11 +91,11 @@ 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 tag of a claim + * @param securityTags securityTags tag of a claim * @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link * HospiceClaim} */ - private ExplanationOfBenefit transformClaim(HospiceClaim claimGroup, String securityTag) { + private ExplanationOfBenefit transformClaim(HospiceClaim claimGroup, List securityTags) { ExplanationOfBenefit eob = new ExplanationOfBenefit(); // Common group level fields between all claim types @@ -214,11 +216,8 @@ private ExplanationOfBenefit transformClaim(HospiceClaim claimGroup, String secu } TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); - eob.getMeta() - .addSecurity() - .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") - .setCode(securityTag) - .setDisplay(securityTag); + eob.getMeta().setSecurity(securityTags); + return eob; } } diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformer.java index 8a5bff3d98..448f13846a 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformer.java @@ -11,12 +11,14 @@ import gov.cms.bfd.model.rif.entities.InpatientClaimLine; import gov.cms.bfd.model.rif.samhsa.InpatientTag; import gov.cms.bfd.server.war.commons.ClaimType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import java.util.Collections; +import java.util.List; import java.util.Optional; import org.hl7.fhir.dstu3.model.Address; +import org.hl7.fhir.dstu3.model.Coding; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.ItemComponent; import org.springframework.beans.factory.annotation.Autowired; @@ -37,8 +39,8 @@ final class InpatientClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(InpatientClaimTransformer.class.getSimpleName(), "transform"); - /** Injecting lookUpSamhsaSecurityTags. */ - @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** Injecting securityTagManager. */ + @Autowired private SecurityTagManager securityTagManager; /** * Instantiates a new transformer. @@ -49,15 +51,15 @@ final class InpatientClaimTransformer implements ClaimTransformerInterface { * * @param metricRegistry the metric registry * @param npiOrgLookup the npi org lookup - * @param lookUpSamhsaSecurityTags SamhsaSecurityTag lookup + * @param securityTagManager SamhsaSecurityTag lookup */ public InpatientClaimTransformer( MetricRegistry metricRegistry, NPIOrgLookup npiOrgLookup, - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { + SecurityTagManager securityTagManager) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); - this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); + this.securityTagManager = requireNonNull(securityTagManager); } /** @@ -76,10 +78,10 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) { ExplanationOfBenefit eob; try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) { InpatientClaim inpatientClaim = (InpatientClaim) claim; - String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel( + List securityTags = + securityTagManager.getClaimSecurityLevelDstu3( String.valueOf(inpatientClaim.getClaimId()), InpatientTag.class); - eob = transformClaim(inpatientClaim, securityTag); + eob = transformClaim(inpatientClaim, securityTags); } return eob; } @@ -88,11 +90,12 @@ 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 tag of a claim + * @param securityTags securityTags tag of a claim * @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link * InpatientClaim} */ - private ExplanationOfBenefit transformClaim(InpatientClaim claimGroup, String securityTag) { + private ExplanationOfBenefit transformClaim( + InpatientClaim claimGroup, List securityTags) { ExplanationOfBenefit eob = new ExplanationOfBenefit(); // Common group level fields between all claim types @@ -294,11 +297,8 @@ private ExplanationOfBenefit transformClaim(InpatientClaim claimGroup, String se } TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); - eob.getMeta() - .addSecurity() - .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") - .setCode(securityTag) - .setDisplay(securityTag); + eob.getMeta().setSecurity(securityTags); + return eob; } } diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformer.java index 614d997b64..903b35763b 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformer.java @@ -12,13 +12,15 @@ import gov.cms.bfd.model.rif.entities.OutpatientClaimLine; import gov.cms.bfd.model.rif.samhsa.OutpatientTag; import gov.cms.bfd.server.war.commons.ClaimType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import java.util.Arrays; +import java.util.List; import java.util.Map; import java.util.Optional; import org.hl7.fhir.dstu3.model.Address; +import org.hl7.fhir.dstu3.model.Coding; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.ItemComponent; import org.springframework.beans.factory.annotation.Autowired; @@ -41,8 +43,8 @@ final class OutpatientClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(OutpatientClaimTransformer.class.getSimpleName(), "transform"); - /** Injecting lookUpSamhsaSecurityTags. */ - @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** Injecting securityTagManager. */ + @Autowired private SecurityTagManager securityTagManager; /** * Instantiates a new transformer. @@ -53,15 +55,15 @@ final class OutpatientClaimTransformer implements ClaimTransformerInterface { * * @param metricRegistry the metric registry * @param npiOrgLookup the npi org lookup - * @param lookUpSamhsaSecurityTags SamhsaSecurityTag lookup + * @param securityTagManager SamhsaSecurityTag lookup */ public OutpatientClaimTransformer( MetricRegistry metricRegistry, NPIOrgLookup npiOrgLookup, - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { + SecurityTagManager securityTagManager) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); - this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); + this.securityTagManager = requireNonNull(securityTagManager); } /** @@ -80,10 +82,10 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) { ExplanationOfBenefit eob; try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) { OutpatientClaim outpatientClaim = (OutpatientClaim) claim; - String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel( + List securityTags = + securityTagManager.getClaimSecurityLevelDstu3( String.valueOf(outpatientClaim.getClaimId()), OutpatientTag.class); - eob = transformClaim(outpatientClaim, securityTag); + eob = transformClaim(outpatientClaim, securityTags); } return eob; } @@ -92,11 +94,12 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) { * Transforms a specified {@link InpatientClaim} into a FHIR {@link ExplanationOfBenefit}. * * @param claimGroup the CCW {@link OutpatientClaim} to transform - * @param securityTag securityTag tag of a claim + * @param securityTags securityTags tag of a claim * @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link * OutpatientClaim} */ - private ExplanationOfBenefit transformClaim(OutpatientClaim claimGroup, String securityTag) { + private ExplanationOfBenefit transformClaim( + OutpatientClaim claimGroup, List securityTags) { ExplanationOfBenefit eob = new ExplanationOfBenefit(); // Common group level fields between all claim types @@ -333,11 +336,7 @@ private ExplanationOfBenefit transformClaim(OutpatientClaim claimGroup, String s } TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); - eob.getMeta() - .addSecurity() - .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") - .setCode(securityTag) - .setDisplay(securityTag); + eob.getMeta().setSecurity(securityTags); return eob; } } diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformer.java index a70376119a..2b26f577fc 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformer.java @@ -13,14 +13,16 @@ import gov.cms.bfd.model.rif.samhsa.SnfTag; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.CommonTransformerUtils; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import java.math.BigDecimal; import java.util.Collections; +import java.util.List; import java.util.Map; import java.util.Optional; import org.hl7.fhir.dstu3.model.Address; +import org.hl7.fhir.dstu3.model.Coding; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.SupportingInformationComponent; @@ -42,8 +44,8 @@ public class SNFClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(SNFClaimTransformer.class.getSimpleName(), "transform"); - /** Injecting lookUpSamhsaSecurityTags. */ - @Autowired private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** Injecting securityTagManager. */ + @Autowired private SecurityTagManager securityTagManager; /** * Instantiates a new transformer. @@ -54,15 +56,15 @@ public class SNFClaimTransformer implements ClaimTransformerInterface { * * @param metricRegistry the metric registry * @param npiOrgLookup the npi org lookup - * @param lookUpSamhsaSecurityTags SamhsaSecurityTag lookup + * @param securityTagManager SamhsaSecurityTag lookup */ public SNFClaimTransformer( MetricRegistry metricRegistry, NPIOrgLookup npiOrgLookup, - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { + SecurityTagManager securityTagManager) { this.metricRegistry = requireNonNull(metricRegistry); this.npiOrgLookup = requireNonNull(npiOrgLookup); - this.lookUpSamhsaSecurityTags = requireNonNull(lookUpSamhsaSecurityTags); + this.securityTagManager = requireNonNull(securityTagManager); } /** @@ -81,10 +83,10 @@ public ExplanationOfBenefit transform(Object claim, boolean includeTaxNumber) { ExplanationOfBenefit eob; try (Timer.Context ignored = metricRegistry.timer(METRIC_NAME).time()) { SNFClaim snfClaim = (SNFClaim) claim; - String securityTag = - lookUpSamhsaSecurityTags.getClaimSecurityLevel( + List securityTags = + securityTagManager.getClaimSecurityLevelDstu3( String.valueOf(snfClaim.getClaimId()), SnfTag.class); - eob = transformClaim(snfClaim, securityTag); + eob = transformClaim(snfClaim, securityTags); } return eob; } @@ -93,11 +95,11 @@ 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 tag of a claim + * @param securityTags securityTags tag of a claim * @return a FHIR {@link ExplanationOfBenefit} resource that represents the specified {@link * SNFClaim} */ - private ExplanationOfBenefit transformClaim(SNFClaim claimGroup, String securityTag) { + private ExplanationOfBenefit transformClaim(SNFClaim claimGroup, List securityTags) { ExplanationOfBenefit eob = new ExplanationOfBenefit(); // Common group level fields between all claim types @@ -256,11 +258,7 @@ private ExplanationOfBenefit transformClaim(SNFClaim claimGroup, String security } TransformerUtils.setLastUpdated(eob, claimGroup.getLastUpdated()); - eob.getMeta() - .addSecurity() - .setSystem("https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html") - .setCode(securityTag) - .setDisplay(securityTag); + eob.getMeta().setSecurity(securityTags); return eob; } } diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2Test.java index fad8ccf0ce..909dd25c5b 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2Test.java @@ -24,8 +24,8 @@ import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.ClaimType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.commons.carin.C4BBClaimProfessionalAndNonClinicianCareTeamRole; import gov.cms.bfd.server.war.commons.carin.C4BBPractitionerIdentifierType; @@ -129,14 +129,14 @@ public void before() throws IOException { when(metricsTimer.time()).thenReturn(metricsTimerContext); npiOrgLookup = RDATestUtils.mockNPIOrgLookup(); FdaDrugCodeDisplayLookup drugCodeDisplayLookup = RDATestUtils.fdaFakeDrugCodeDisplayLookup(); - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags = mock(LookUpSamhsaSecurityTags.class); + SecurityTagManager securityTagManager = mock(SecurityTagManager.class); carrierClaimTransformer = new CarrierClaimTransformerV2( metricRegistry, drugCodeDisplayLookup, NPIOrgLookup.createNpiOrgLookup(), - lookUpSamhsaSecurityTags); + securityTagManager); claim = generateClaim(); ExplanationOfBenefit genEob = carrierClaimTransformer.transform(claim, false); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2Test.java index f1220beecb..b18560bbf5 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2Test.java @@ -21,8 +21,8 @@ import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.CCWUtils; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.ProfileConstants; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; @@ -90,7 +90,7 @@ public final class DMEClaimTransformerV2Test { @Mock NPIOrgLookup mockNpiOrgLookup; /** The SamhsaSecurityTag lookup. */ - @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + @Mock SecurityTagManager securityTagManager; /** * Generates the Claim object to be used in multiple tests. @@ -126,7 +126,7 @@ public void before() throws IOException { .thenReturn(Optional.of("207X00000X\tOrthopaedic Surgery")); dmeClaimTransformer = new DMEClaimTransformerV2( - metricRegistry, fdaDrugCodeDisplayLookup, mockNpiOrgLookup, lookUpSamhsaSecurityTags); + metricRegistry, fdaDrugCodeDisplayLookup, mockNpiOrgLookup, securityTagManager); claim = generateClaim(); ExplanationOfBenefit genEob = dmeClaimTransformer.transform(claim, false); IParser parser = fhirContext.newJsonParser(); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2Test.java index fe632a38de..41848e33ae 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2Test.java @@ -20,8 +20,8 @@ import gov.cms.bfd.model.rif.entities.HHAClaim; import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import gov.cms.bfd.server.war.ServerTestUtils; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.ProfileConstants; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; @@ -88,7 +88,7 @@ public class HHAClaimTransformerV2Test { @Mock MetricRegistry metricRegistry; /** The SamhsaSecurityTag lookup. */ - @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + @Mock SecurityTagManager securityTagManager; /** The metrics timer. Used for determining the timer was started. */ @Mock Timer metricsTimer; @@ -132,7 +132,7 @@ public void before() throws IOException { hhaClaimTransformer = new HHAClaimTransformerV2( - metricRegistry, NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); + metricRegistry, NPIOrgLookup.createNpiOrgLookup(), securityTagManager); claim = generateClaim(); ExplanationOfBenefit genEob = hhaClaimTransformer.transform(claim, false); IParser parser = fhirContext.newJsonParser(); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2Test.java index aa669a3e35..81281a1bbf 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2Test.java @@ -22,9 +22,9 @@ import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.ClaimType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; import gov.cms.bfd.server.war.commons.ProfileConstants; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; @@ -88,7 +88,7 @@ public final class HospiceClaimTransformerV2Test { @Mock MetricRegistry metricRegistry; /** The SamhsaSecurityTag lookup. */ - @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + @Mock SecurityTagManager securityTagManager; /** The metrics timer. Used for determining the timer was started. */ @Mock Timer metricsTimer; @@ -112,7 +112,7 @@ public void generateClaim() throws FHIRException, IOException { hospiceClaimTransformer = new HospiceClaimTransformerV2( - metricRegistry, NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); + metricRegistry, NPIOrgLookup.createNpiOrgLookup(), securityTagManager); List parsedRecords = ServerTestUtils.parseData(Arrays.asList(StaticRifResourceGroup.SAMPLE_A.getResources())); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2Test.java index 93e1ab076c..2b87f1038d 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2Test.java @@ -18,8 +18,8 @@ import gov.cms.bfd.model.rif.entities.InpatientClaim; import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import gov.cms.bfd.server.war.ServerTestUtils; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.ProfileConstants; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; @@ -85,7 +85,7 @@ public final class InpatientClaimTransformerV2Test { @Mock MetricRegistry metricRegistry; /** The SamhsaSecurityTag lookup. */ - @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + @Mock SecurityTagManager securityTagManager; /** The metrics timer. Used for determining the timer was started. */ @Mock Timer metricsTimer; @@ -131,7 +131,7 @@ public void before() throws IOException { inpatientClaimTransformer = new InpatientClaimTransformerV2( - metricRegistry, NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); + metricRegistry, NPIOrgLookup.createNpiOrgLookup(), securityTagManager); claim = generateClaim(); ExplanationOfBenefit genEob = inpatientClaimTransformer.transform(claim, false); IParser parser = fhirContext.newJsonParser(); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2Test.java index b889a8a884..e9da536433 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2Test.java @@ -20,8 +20,8 @@ import gov.cms.bfd.model.rif.entities.OutpatientClaim; import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import gov.cms.bfd.server.war.ServerTestUtils; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.ProfileConstants; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; @@ -85,7 +85,7 @@ public final class OutpatientClaimTransformerV2Test { @Mock Timer metricsTimer; /** The SamhsaSecurityTag lookup. */ - @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + @Mock SecurityTagManager securityTagManager; /** The metrics timer context. Used for determining the timer was stopped. */ @Mock Timer.Context metricsTimerContext; @@ -131,7 +131,7 @@ public void before() throws IOException { metricRegistry, drugCodeDisplayLookup, NPIOrgLookup.createNpiOrgLookup(), - lookUpSamhsaSecurityTags); + securityTagManager); claim = generateClaim(); ExplanationOfBenefit genEob = outpatientClaimTransformer.transform(claim, false); IParser parser = fhirContext.newJsonParser(); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/PatientClaimsEobTaskTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/PatientClaimsEobTaskTransformerV2Test.java index 0e012e9e99..076e3f87e3 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/PatientClaimsEobTaskTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/PatientClaimsEobTaskTransformerV2Test.java @@ -30,7 +30,7 @@ import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.ClaimType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import jakarta.persistence.EntityManager; @@ -79,7 +79,7 @@ class PatientClaimsEobTaskTransformerV2Test { @Mock NPIOrgLookup mockNpiOrgLookup; /** The SamhsaSecurityTag lookup. */ - @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + @Mock SecurityTagManager securityTagManager; /** The FDA drug display lookup. */ @Mock FdaDrugCodeDisplayLookup mockDrugDisplayLookup; @@ -213,10 +213,7 @@ void testTaskTransformerUsingCarrierClaimNoSamhsaFilter() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterfaceV2 claimTransformer = new CarrierClaimTransformerV2( - new MetricRegistry(), - mockDrugDisplayLookup, - mockNpiOrgLookup, - lookUpSamhsaSecurityTags); + new MetricRegistry(), mockDrugDisplayLookup, mockNpiOrgLookup, securityTagManager); PatientClaimsEobTaskTransformerV2 taskTransformer = new PatientClaimsEobTaskTransformerV2( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -250,10 +247,7 @@ void testTaskTransformerUsingCarrierClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterfaceV2 claimTransformer = new CarrierClaimTransformerV2( - new MetricRegistry(), - mockDrugDisplayLookup, - mockNpiOrgLookup, - lookUpSamhsaSecurityTags); + new MetricRegistry(), mockDrugDisplayLookup, mockNpiOrgLookup, securityTagManager); PatientClaimsEobTaskTransformerV2 taskTransformer = new PatientClaimsEobTaskTransformerV2( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -287,10 +281,7 @@ void testTaskTransformerUsingDmeClaimNoSamhsaFilter() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterfaceV2 claimTransformer = new DMEClaimTransformerV2( - new MetricRegistry(), - mockDrugDisplayLookup, - mockNpiOrgLookup, - lookUpSamhsaSecurityTags); + new MetricRegistry(), mockDrugDisplayLookup, mockNpiOrgLookup, securityTagManager); PatientClaimsEobTaskTransformerV2 taskTransformer = new PatientClaimsEobTaskTransformerV2( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -324,10 +315,7 @@ void testTaskTransformerUsingDmeClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterfaceV2 claimTransformer = new DMEClaimTransformerV2( - new MetricRegistry(), - mockDrugDisplayLookup, - mockNpiOrgLookup, - lookUpSamhsaSecurityTags); + new MetricRegistry(), mockDrugDisplayLookup, mockNpiOrgLookup, securityTagManager); PatientClaimsEobTaskTransformerV2 taskTransformer = new PatientClaimsEobTaskTransformerV2( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -360,7 +348,7 @@ void testTaskTransformerUsingHhaClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterfaceV2 claimTransformer = - new HHAClaimTransformerV2(new MetricRegistry(), mockNpiOrgLookup, lookUpSamhsaSecurityTags); + new HHAClaimTransformerV2(new MetricRegistry(), mockNpiOrgLookup, securityTagManager); PatientClaimsEobTaskTransformerV2 taskTransformer = new PatientClaimsEobTaskTransformerV2( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -394,8 +382,7 @@ void testTaskTransformerUsingHospiceClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterfaceV2 claimTransformer = - new HospiceClaimTransformerV2( - new MetricRegistry(), mockNpiOrgLookup, lookUpSamhsaSecurityTags); + new HospiceClaimTransformerV2(new MetricRegistry(), mockNpiOrgLookup, securityTagManager); PatientClaimsEobTaskTransformerV2 taskTransformer = new PatientClaimsEobTaskTransformerV2( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -429,8 +416,7 @@ void testTaskTransformerUsingInpatientClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterfaceV2 claimTransformer = - new InpatientClaimTransformerV2( - new MetricRegistry(), mockNpiOrgLookup, lookUpSamhsaSecurityTags); + new InpatientClaimTransformerV2(new MetricRegistry(), mockNpiOrgLookup, securityTagManager); PatientClaimsEobTaskTransformerV2 taskTransformer = new PatientClaimsEobTaskTransformerV2( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -465,10 +451,7 @@ void testTaskTransformerUsingOutpatientClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterfaceV2 claimTransformer = new OutpatientClaimTransformerV2( - new MetricRegistry(), - mockDrugDisplayLookup, - mockNpiOrgLookup, - lookUpSamhsaSecurityTags); + new MetricRegistry(), mockDrugDisplayLookup, mockNpiOrgLookup, securityTagManager); PatientClaimsEobTaskTransformerV2 taskTransformer = new PatientClaimsEobTaskTransformerV2( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -536,7 +519,7 @@ void testTaskTransformerUsingSnfClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterfaceV2 claimTransformer = - new SNFClaimTransformerV2(new MetricRegistry(), mockNpiOrgLookup, lookUpSamhsaSecurityTags); + new SNFClaimTransformerV2(new MetricRegistry(), mockNpiOrgLookup, securityTagManager); PatientClaimsEobTaskTransformerV2 taskTransformer = new PatientClaimsEobTaskTransformerV2( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -572,7 +555,7 @@ void testGetFailureFromTaskTransformer() { setupClaimEntity(mockEntityManager, ClaimType.DME, clmMockCriteria, clmRoot); ClaimTransformerInterfaceV2 claimTransformer = - new SNFClaimTransformerV2(metricRegistry, mockNpiOrgLookup, lookUpSamhsaSecurityTags); + new SNFClaimTransformerV2(metricRegistry, mockNpiOrgLookup, securityTagManager); PatientClaimsEobTaskTransformerV2 taskTransformer = new PatientClaimsEobTaskTransformerV2( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2Test.java index 073dd7f7cf..0b9ca5628e 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2Test.java @@ -19,8 +19,8 @@ import gov.cms.bfd.model.rif.entities.SNFClaim; import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import gov.cms.bfd.server.war.ServerTestUtils; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.ProfileConstants; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; @@ -85,7 +85,7 @@ public class SNFClaimTransformerV2Test { @Mock MetricRegistry metricRegistry; /** The SamhsaSecurityTag lookup. */ - @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + @Mock SecurityTagManager securityTagManager; /** The metrics timer. Used for determining the timer was started. */ @Mock Timer metricsTimer; @@ -131,7 +131,7 @@ public void before() throws IOException { snfClaimTransformer = new SNFClaimTransformerV2( - metricRegistry, NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); + metricRegistry, NPIOrgLookup.createNpiOrgLookup(), securityTagManager); claim = generateClaim(); ExplanationOfBenefit genEob = snfClaimTransformer.transform(claim, false); IParser parser = fhirContext.newJsonParser(); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/SamhsaMatcherR4FromClaimTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/SamhsaMatcherR4FromClaimTransformerV2Test.java index be53c168c6..de57df1a78 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/SamhsaMatcherR4FromClaimTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/SamhsaMatcherR4FromClaimTransformerV2Test.java @@ -22,7 +22,7 @@ import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.IcdCode; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; @@ -132,24 +132,24 @@ public static Stream data() throws IOException { FdaDrugCodeDisplayLookup fdaDrugCodeDisplayLookup = new FdaDrugCodeDisplayLookup(npiDataStream); NPIOrgLookup npiOrgLookup = NPIOrgLookup.createNpiOrgLookup(); MetricRegistry metricRegistry = new MetricRegistry(); - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags = mock(LookUpSamhsaSecurityTags.class); + SecurityTagManager securityTagManager = mock(SecurityTagManager.class); DMEClaimTransformerV2 dmeClaimTransformerV2 = new DMEClaimTransformerV2( - metricRegistry, fdaDrugCodeDisplayLookup, npiOrgLookup, lookUpSamhsaSecurityTags); + metricRegistry, fdaDrugCodeDisplayLookup, npiOrgLookup, securityTagManager); CarrierClaimTransformerV2 carrierClaimTransformerV2 = new CarrierClaimTransformerV2( - metricRegistry, fdaDrugCodeDisplayLookup, npiOrgLookup, lookUpSamhsaSecurityTags); + metricRegistry, fdaDrugCodeDisplayLookup, npiOrgLookup, securityTagManager); HHAClaimTransformerV2 hhaClaimTransformerV2 = - new HHAClaimTransformerV2(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); + new HHAClaimTransformerV2(metricRegistry, npiOrgLookup, securityTagManager); InpatientClaimTransformerV2 inpatientClaimTransformerV2 = - new InpatientClaimTransformerV2(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); + new InpatientClaimTransformerV2(metricRegistry, npiOrgLookup, securityTagManager); OutpatientClaimTransformerV2 outpatientClaimTransformerV2 = new OutpatientClaimTransformerV2( - metricRegistry, fdaDrugCodeDisplayLookup, npiOrgLookup, lookUpSamhsaSecurityTags); + metricRegistry, fdaDrugCodeDisplayLookup, npiOrgLookup, securityTagManager); PartDEventTransformerV2 partDEventTransformer = new PartDEventTransformerV2(metricRegistry, fdaDrugCodeDisplayLookup, npiOrgLookup); SNFClaimTransformerV2 snfClaimTransformerV2 = - new SNFClaimTransformerV2(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); + new SNFClaimTransformerV2(metricRegistry, npiOrgLookup, securityTagManager); ExplanationOfBenefit inpatientEob = inpatientClaimTransformerV2.transform(getClaim(InpatientClaim.class), false); @@ -166,7 +166,7 @@ public static Stream data() throws IOException { String hhaClaimType = TransformerUtilsV2.getClaimType(hhaEob).toString(); HospiceClaimTransformerV2 hospiceClaimTransformerV2 = - new HospiceClaimTransformerV2(new MetricRegistry(), npiOrgLookup, lookUpSamhsaSecurityTags); + new HospiceClaimTransformerV2(new MetricRegistry(), npiOrgLookup, securityTagManager); ExplanationOfBenefit hospiceEob = hospiceClaimTransformerV2.transform(getClaim(HospiceClaim.class), false); String hospiceClaimType = TransformerUtilsV2.getClaimType(hospiceEob).toString(); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/TransformerTestUtilsV2.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/TransformerTestUtilsV2.java index 242dbd82b0..64b947cb16 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/TransformerTestUtilsV2.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/TransformerTestUtilsV2.java @@ -28,8 +28,8 @@ import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.CommonTransformerUtils; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.commons.carin.C4BBClaimProfessionalAndNonClinicianCareTeamRole; import gov.cms.bfd.server.war.stu3.providers.ExplanationOfBenefitResourceProvider; @@ -1605,7 +1605,7 @@ static void assertExtensionCodingDoesNotExist( * @param includeTaxNumbers if tax numbers should be included in the response * @param drugCodeDisplayLookup the drug code display lookup * @param npiOrgLookup the npi org lookup - * @param lookUpSamhsaSecurityTags SamhsaSecurityTags lookup + * @param securityTagManager SamhsaSecurityTags lookup * @return the transformed {@link ExplanationOfBenefit} for the specified RIF record */ static ExplanationOfBenefit transformRifRecordToEob( @@ -1614,36 +1614,36 @@ static ExplanationOfBenefit transformRifRecordToEob( boolean includeTaxNumbers, FdaDrugCodeDisplayLookup drugCodeDisplayLookup, NPIOrgLookup npiOrgLookup, - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { + SecurityTagManager securityTagManager) { ClaimTransformerInterfaceV2 claimTransformerInterface = null; if (rifRecord instanceof CarrierClaim) { claimTransformerInterface = new CarrierClaimTransformerV2( - metricRegistry, drugCodeDisplayLookup, npiOrgLookup, lookUpSamhsaSecurityTags); + metricRegistry, drugCodeDisplayLookup, npiOrgLookup, securityTagManager); } else if (rifRecord instanceof DMEClaim) { claimTransformerInterface = new DMEClaimTransformerV2( - metricRegistry, drugCodeDisplayLookup, npiOrgLookup, lookUpSamhsaSecurityTags); + metricRegistry, drugCodeDisplayLookup, npiOrgLookup, securityTagManager); } else if (rifRecord instanceof HHAClaim) { claimTransformerInterface = - new HHAClaimTransformerV2(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); + new HHAClaimTransformerV2(metricRegistry, npiOrgLookup, securityTagManager); } else if (rifRecord instanceof HospiceClaim) { claimTransformerInterface = - new HospiceClaimTransformerV2(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); + new HospiceClaimTransformerV2(metricRegistry, npiOrgLookup, securityTagManager); } else if (rifRecord instanceof InpatientClaim) { claimTransformerInterface = - new InpatientClaimTransformerV2(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); + new InpatientClaimTransformerV2(metricRegistry, npiOrgLookup, securityTagManager); } else if (rifRecord instanceof OutpatientClaim) { claimTransformerInterface = new OutpatientClaimTransformerV2( - metricRegistry, drugCodeDisplayLookup, npiOrgLookup, lookUpSamhsaSecurityTags); + metricRegistry, drugCodeDisplayLookup, npiOrgLookup, securityTagManager); } else if (rifRecord instanceof PartDEvent) { claimTransformerInterface = new PartDEventTransformerV2(metricRegistry, drugCodeDisplayLookup, npiOrgLookup); } else if (rifRecord instanceof SNFClaim) { claimTransformerInterface = - new SNFClaimTransformerV2(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); + new SNFClaimTransformerV2(metricRegistry, npiOrgLookup, securityTagManager); } else { throw new BadCodeMonkeyException("Unhandled RifRecord type!"); } diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/TransformerUtilsV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/TransformerUtilsV2Test.java index 7438031d07..56020a757b 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/TransformerUtilsV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/TransformerUtilsV2Test.java @@ -29,11 +29,11 @@ import gov.cms.bfd.server.war.commons.C4BBInstutionalClaimSubtypes; import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.ClaimType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.OffsetLinkBuilder; import gov.cms.bfd.server.war.commons.Profile; import gov.cms.bfd.server.war.commons.ProfileConstants; import gov.cms.bfd.server.war.commons.QueryUtils; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.commons.carin.C4BBAdjudication; import gov.cms.bfd.server.war.commons.carin.C4BBAdjudicationStatus; @@ -86,7 +86,7 @@ public class TransformerUtilsV2Test { private MockedStatic npiOrgLookup; /** The SamhsaSecurityTag lookup. */ - @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + @Mock SecurityTagManager securityTagManager; /** One-time setup of objects that are normally injected. */ @BeforeEach @@ -901,7 +901,6 @@ public void addCareTeamExtensionWhenEmptyOptionalExpectNoExtensionAdded() { public void createBundleWithoutPagingWithASizeOf2() throws IOException { NPIOrgLookup npiOrgLookup = NPIOrgLookup.createNpiOrgLookup(); - // LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags = mock(LookUpSamhsaSecurityTags.class); RequestDetails requestDetails = mock(RequestDetails.class); Map pagingParams = new HashMap(); pagingParams.put(Constants.PARAM_COUNT, new String[] {"2"}); @@ -924,7 +923,7 @@ public void createBundleWithoutPagingWithASizeOf2() throws IOException { FhirContext fhirContext = FhirContext.forR4(); ClaimTransformerInterfaceV2 claimTransformerInterface = - new HHAClaimTransformerV2(new MetricRegistry(), npiOrgLookup, lookUpSamhsaSecurityTags); + new HHAClaimTransformerV2(new MetricRegistry(), npiOrgLookup, securityTagManager); ExplanationOfBenefit genEob = claimTransformerInterface.transform(hhaClaim, false); IParser parser = fhirContext.newJsonParser(); String json = parser.encodeResourceToString(genEob); @@ -940,7 +939,7 @@ public void createBundleWithoutPagingWithASizeOf2() throws IOException { hospiceClaim.setLastUpdated(Instant.now()); claimTransformerInterface = - new HospiceClaimTransformerV2(new MetricRegistry(), npiOrgLookup, lookUpSamhsaSecurityTags); + new HospiceClaimTransformerV2(new MetricRegistry(), npiOrgLookup, securityTagManager); genEob = claimTransformerInterface.transform(hospiceClaim, false); parser = fhirContext.newJsonParser(); json = parser.encodeResourceToString(genEob); @@ -962,7 +961,7 @@ public void createBundleWithoutPagingWithASizeOf2() throws IOException { new MetricRegistry(), new FdaDrugCodeDisplayLookup(npiDataStream), npiOrgLookup, - lookUpSamhsaSecurityTags); + securityTagManager); genEob = claimTransformerInterface.transform(dmeClaim, false); parser = fhirContext.newJsonParser(); json = parser.encodeResourceToString(genEob); @@ -977,8 +976,7 @@ public void createBundleWithoutPagingWithASizeOf2() throws IOException { inpatientClaim.setLastUpdated(Instant.now()); claimTransformerInterface = - new InpatientClaimTransformerV2( - new MetricRegistry(), npiOrgLookup, lookUpSamhsaSecurityTags); + new InpatientClaimTransformerV2(new MetricRegistry(), npiOrgLookup, securityTagManager); genEob = claimTransformerInterface.transform(inpatientClaim, false); parser = fhirContext.newJsonParser(); json = parser.encodeResourceToString(genEob); @@ -1106,7 +1104,7 @@ public void createBundleWithoutPaging() throws IOException { FhirContext fhirContext = FhirContext.forR4(); ClaimTransformerInterfaceV2 claimTransformerInterface = new HHAClaimTransformerV2( - new MetricRegistry(), NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); + new MetricRegistry(), NPIOrgLookup.createNpiOrgLookup(), securityTagManager); ExplanationOfBenefit genEob = claimTransformerInterface.transform(hhaClaim, false); IParser parser = fhirContext.newJsonParser(); String json = parser.encodeResourceToString(genEob); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2Test.java index 71c59679f9..6cdbc11ce2 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2Test.java @@ -9,7 +9,7 @@ import gov.cms.bfd.model.rda.entities.RdaFissClaim; import gov.cms.bfd.model.rda.entities.RdaFissDiagnosisCode; import gov.cms.bfd.model.rda.entities.RdaFissRevenueLine; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import java.time.Instant; import java.time.LocalDate; import java.util.ArrayList; @@ -132,7 +132,7 @@ public void diagnosisCodeTest( int numberOfRecords) { RdaFissClaim entity = new RdaFissClaim(); - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags = mock(LookUpSamhsaSecurityTags.class); + SecurityTagManager securityTagManager = mock(SecurityTagManager.class); entity.setLastUpdated(Instant.ofEpochMilli(1)); entity.setStmtCovToDate(LocalDate.of(2020, 1, 1)); @@ -158,7 +158,7 @@ public void diagnosisCodeTest( entity.setRevenueLines(Set.of(line)); FissClaimTransformerV2 fissClaimTransformerV2 = - new FissClaimTransformerV2(new MetricRegistry(), lookUpSamhsaSecurityTags); + new FissClaimTransformerV2(new MetricRegistry(), securityTagManager); Claim claim = fissClaimTransformerV2.transform(entity, true); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2Test.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2Test.java index 4093abc8e8..b346e9d910 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2Test.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2Test.java @@ -8,7 +8,7 @@ import gov.cms.bfd.model.rda.entities.RdaMcsClaim; import gov.cms.bfd.model.rda.entities.RdaMcsDetail; import gov.cms.bfd.model.rda.entities.RdaMcsDiagnosisCode; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import java.time.Instant; import java.time.LocalDate; import java.util.ArrayList; @@ -102,7 +102,7 @@ public void diagnosisCodeTest( int numberOfRecords) { RdaMcsClaim entity = new RdaMcsClaim(); - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags = mock(LookUpSamhsaSecurityTags.class); + SecurityTagManager securityTagManager = mock(SecurityTagManager.class); entity.setLastUpdated(Instant.ofEpochMilli(1)); @@ -145,7 +145,7 @@ public void diagnosisCodeTest( entity.setDetails(new HashSet<>(procedures)); McsClaimTransformerV2 mcsClaimTransformerV2 = - new McsClaimTransformerV2(new MetricRegistry(), lookUpSamhsaSecurityTags); + new McsClaimTransformerV2(new MetricRegistry(), securityTagManager); Claim claim = mcsClaimTransformerV2.transform(entity, true); assertEquals(numberOfRecords, claim.getDiagnosis().size()); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/R4ClaimSamhsaMatcherTransformerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/R4ClaimSamhsaMatcherTransformerTest.java index 949a1b886a..9b3f3e941b 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/R4ClaimSamhsaMatcherTransformerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/pac/R4ClaimSamhsaMatcherTransformerTest.java @@ -12,7 +12,7 @@ import gov.cms.bfd.model.rda.entities.RdaMcsClaim; import gov.cms.bfd.model.rda.entities.RdaMcsDetail; import gov.cms.bfd.model.rda.entities.RdaMcsDiagnosisCode; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import java.time.Instant; import java.time.LocalDate; import java.util.List; @@ -58,9 +58,6 @@ public class R4ClaimSamhsaMatcherTransformerTest { /** A date to use for ICD10 testing. */ private static final LocalDate ICD_10_DATE = LocalDate.of(2020, 1, 1); - // /** The SamhsaSecurityTag lookup. */ - // @Mock - // LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; /** * Data method for the fissTest. Used automatically via the MethodSource annotation. * @@ -364,7 +361,7 @@ public void fissTest( boolean expectedResult, String errorMessagePostFix) { RdaFissClaim entity = new RdaFissClaim(); - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags = mock(LookUpSamhsaSecurityTags.class); + SecurityTagManager securityTagManager = mock(SecurityTagManager.class); entity.setLastUpdated(Instant.ofEpochMilli(1)); entity.setStmtCovToDate(toDate); @@ -404,9 +401,9 @@ public void fissTest( entity.setProcCodes(procedures); entity.setRevenueLines(Set.of(line)); FissClaimTransformerV2 fissClaimTransformerV2 = - new FissClaimTransformerV2(new MetricRegistry(), lookUpSamhsaSecurityTags); + new FissClaimTransformerV2(new MetricRegistry(), securityTagManager); McsClaimTransformerV2 mcsClaimTransformerV2 = - new McsClaimTransformerV2(new MetricRegistry(), lookUpSamhsaSecurityTags); + new McsClaimTransformerV2(new MetricRegistry(), securityTagManager); Claim claim = fissClaimTransformerV2.transform(entity, true); @@ -502,7 +499,7 @@ public void mcsTest( boolean expectedResult, String errorMessagePostFix) { RdaMcsClaim entity = new RdaMcsClaim(); - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags = mock(LookUpSamhsaSecurityTags.class); + SecurityTagManager securityTagManager = mock(SecurityTagManager.class); entity.setLastUpdated(Instant.ofEpochMilli(1)); @@ -543,9 +540,9 @@ public void mcsTest( entity.setDetails(procedures); FissClaimTransformerV2 fissClaimTransformerV2 = - new FissClaimTransformerV2(new MetricRegistry(), lookUpSamhsaSecurityTags); + new FissClaimTransformerV2(new MetricRegistry(), securityTagManager); McsClaimTransformerV2 mcsClaimTransformerV2 = - new McsClaimTransformerV2(new MetricRegistry(), lookUpSamhsaSecurityTags); + new McsClaimTransformerV2(new MetricRegistry(), securityTagManager); Claim claim = mcsClaimTransformerV2.transform(entity, true); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformerTest.java index a75ff0adbd..f20c437afc 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformerTest.java @@ -23,8 +23,8 @@ import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.ClaimType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; @@ -62,8 +62,8 @@ public final class CarrierClaimTransformerTest { /** The NPI org lookup to use for the test. */ @Mock NPIOrgLookup npiOrgLookup; - /** The lookUpSamhsaSecurityTags. */ - @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The securityTagManager. */ + @Mock SecurityTagManager securityTagManager; /** The mock metric timer. */ @Mock Timer metricsTimer; @@ -83,7 +83,7 @@ protected void setup() { carrierClaimTransformer = new CarrierClaimTransformer( - metricRegistry, drugDisplayLookup, npiOrgLookup, lookUpSamhsaSecurityTags); + metricRegistry, drugDisplayLookup, npiOrgLookup, securityTagManager); } /** diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformerTest.java index 70164f41cb..ddc17ea37c 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformerTest.java @@ -22,8 +22,8 @@ import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.ClaimType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import java.io.IOException; import java.time.Instant; @@ -56,8 +56,8 @@ public final class DMEClaimTransformerTest { /** The FDA drug lookup to use for the test. */ @Mock FdaDrugCodeDisplayLookup drugDisplayLookup; - /** The lookUpSamhsaSecurityTags. */ - @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The securityTagManager. */ + @Mock SecurityTagManager securityTagManager; /** The metrics timer. Used for determining the timer was started. */ @Mock Timer metricsTimer; @@ -75,7 +75,7 @@ protected void setup() { .thenReturn("UNKNOWN"); dmeClaimTransformer = - new DMEClaimTransformer(metricRegistry, drugDisplayLookup, lookUpSamhsaSecurityTags); + new DMEClaimTransformer(metricRegistry, drugDisplayLookup, securityTagManager); } /** diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformerTest.java index d71dcb4253..fec378631e 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformerTest.java @@ -16,8 +16,8 @@ import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.ClaimType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; import java.util.Arrays; @@ -47,8 +47,8 @@ public final class HHAClaimTransformerTest { /** The Metric Registry to use for the test. */ @Mock MetricRegistry metricRegistry; - /** The lookUpSamhsaSecurityTags. */ - @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The securityTagManager. */ + @Mock SecurityTagManager securityTagManager; /** The metrics timer. Used for determining the timer was started. */ @Mock Timer metricsTimer; @@ -68,7 +68,7 @@ public void setup() throws IOException { hhaClaimTransformer = new HHAClaimTransformer( - metricRegistry, NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); + metricRegistry, NPIOrgLookup.createNpiOrgLookup(), securityTagManager); } /** Releases the static mock NPIOrgLookup. */ diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformerTest.java index 326292e909..0067b754fa 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformerTest.java @@ -16,8 +16,8 @@ import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.ClaimType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; import java.util.Arrays; @@ -53,8 +53,8 @@ public final class HospiceClaimTransformerTest { /** The metrics timer context. Used for determining the timer was stopped. */ @Mock Timer.Context metricsTimerContext; - /** The lookUpSamhsaSecurityTags. */ - @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The securityTagManager. */ + @Mock SecurityTagManager securityTagManager; /** The NPI org lookup to use for the test. */ private MockedStatic npiOrgLookup; @@ -68,7 +68,7 @@ public void setup() throws IOException { hospiceClaimTransformer = new HospiceClaimTransformer( - metricRegistry, NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); + metricRegistry, NPIOrgLookup.createNpiOrgLookup(), securityTagManager); } /** Releases the static mock NPIOrgLookup. */ diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformerTest.java index c53893baeb..bffc6b8431 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformerTest.java @@ -19,8 +19,8 @@ import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.CommonTransformerUtils; import gov.cms.bfd.server.war.commons.Diagnosis; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; import java.time.Instant; @@ -50,8 +50,8 @@ public final class InpatientClaimTransformerTest { /** The Metric Registry to use for the test. */ @Mock MetricRegistry metricRegistry; - /** The lookUpSamhsaSecurityTags. */ - @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The securityTagManager. */ + @Mock SecurityTagManager securityTagManager; /** The metrics timer. Used for determining the timer was started. */ @Mock Timer metricsTimer; @@ -71,7 +71,7 @@ public void setup() throws IOException { inpatientClaimTransformer = new InpatientClaimTransformer( - metricRegistry, NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); + metricRegistry, NPIOrgLookup.createNpiOrgLookup(), securityTagManager); } /** Releases the static mock NPIOrgLookup. */ diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformerTest.java index 72b999dc0b..9a80adefcb 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformerTest.java @@ -18,8 +18,8 @@ import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.CCWProcedure; import gov.cms.bfd.server.war.commons.ClaimType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; import java.time.ZoneId; @@ -53,7 +53,7 @@ public final class OutpatientClaimTransformerTest { @Mock MetricRegistry metricRegistry; /** The SamhsaSecurityTag lookup. */ - @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + @Mock SecurityTagManager securityTagManager; /** The metrics timer. Used for determining the timer was started. */ @Mock Timer metricsTimer; @@ -73,7 +73,7 @@ public void setup() throws IOException { outpatientClaimTransformer = new OutpatientClaimTransformer( - metricRegistry, NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); + metricRegistry, NPIOrgLookup.createNpiOrgLookup(), securityTagManager); } /** Releases the static mock NPIOrgLookup. */ diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/PatientClaimsEobTaskTransformerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/PatientClaimsEobTaskTransformerTest.java index 575b6afe5e..668a155d1d 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/PatientClaimsEobTaskTransformerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/PatientClaimsEobTaskTransformerTest.java @@ -30,7 +30,7 @@ import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.ClaimType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; import jakarta.persistence.EntityManager; @@ -78,8 +78,8 @@ class PatientClaimsEobTaskTransformerTest { /** The NPI Org lookup. */ @Mock NPIOrgLookup mockNpiOrgLookup; - /** The lookUpSamhsaSecurityTags. */ - @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The securityTagManager. */ + @Mock SecurityTagManager securityTagManager; /** The FDA drug display lookup. */ @Mock FdaDrugCodeDisplayLookup mockDrugDisplayLookup; @@ -209,10 +209,7 @@ void testTaskTransformerUsingCarrierClaimNoSamhsaFilter() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterface claimTransformer = new CarrierClaimTransformer( - new MetricRegistry(), - mockDrugDisplayLookup, - mockNpiOrgLookup, - lookUpSamhsaSecurityTags); + new MetricRegistry(), mockDrugDisplayLookup, mockNpiOrgLookup, securityTagManager); PatientClaimsEobTaskTransformer taskTransformer = new PatientClaimsEobTaskTransformer( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -246,10 +243,7 @@ void testTaskTransformerUsingCarrierClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterface claimTransformer = new CarrierClaimTransformer( - new MetricRegistry(), - mockDrugDisplayLookup, - mockNpiOrgLookup, - lookUpSamhsaSecurityTags); + new MetricRegistry(), mockDrugDisplayLookup, mockNpiOrgLookup, securityTagManager); PatientClaimsEobTaskTransformer taskTransformer = new PatientClaimsEobTaskTransformer( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -282,8 +276,7 @@ void testTaskTransformerUsingDmeClaimNoSamhsaFilter() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterface claimTransformer = - new DMEClaimTransformer( - new MetricRegistry(), mockDrugDisplayLookup, lookUpSamhsaSecurityTags); + new DMEClaimTransformer(new MetricRegistry(), mockDrugDisplayLookup, securityTagManager); PatientClaimsEobTaskTransformer taskTransformer = new PatientClaimsEobTaskTransformer( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -316,8 +309,7 @@ void testTaskTransformerUsingDmeClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterface claimTransformer = - new DMEClaimTransformer( - new MetricRegistry(), mockDrugDisplayLookup, lookUpSamhsaSecurityTags); + new DMEClaimTransformer(new MetricRegistry(), mockDrugDisplayLookup, securityTagManager); PatientClaimsEobTaskTransformer taskTransformer = new PatientClaimsEobTaskTransformer( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -350,7 +342,7 @@ void testTaskTransformerUsingHhaClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterface claimTransformer = - new HHAClaimTransformer(new MetricRegistry(), mockNpiOrgLookup, lookUpSamhsaSecurityTags); + new HHAClaimTransformer(new MetricRegistry(), mockNpiOrgLookup, securityTagManager); PatientClaimsEobTaskTransformer taskTransformer = new PatientClaimsEobTaskTransformer( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -384,8 +376,7 @@ void testTaskTransformerUsingHospiceClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterface claimTransformer = - new HospiceClaimTransformer( - new MetricRegistry(), mockNpiOrgLookup, lookUpSamhsaSecurityTags); + new HospiceClaimTransformer(new MetricRegistry(), mockNpiOrgLookup, securityTagManager); PatientClaimsEobTaskTransformer taskTransformer = new PatientClaimsEobTaskTransformer( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -419,8 +410,7 @@ void testTaskTransformerUsingInpatientClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterface claimTransformer = - new InpatientClaimTransformer( - new MetricRegistry(), mockNpiOrgLookup, lookUpSamhsaSecurityTags); + new InpatientClaimTransformer(new MetricRegistry(), mockNpiOrgLookup, securityTagManager); PatientClaimsEobTaskTransformer taskTransformer = new PatientClaimsEobTaskTransformer( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -454,8 +444,7 @@ void testTaskTransformerUsingOutpatientClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterface claimTransformer = - new OutpatientClaimTransformer( - new MetricRegistry(), mockNpiOrgLookup, lookUpSamhsaSecurityTags); + new OutpatientClaimTransformer(new MetricRegistry(), mockNpiOrgLookup, securityTagManager); PatientClaimsEobTaskTransformer taskTransformer = new PatientClaimsEobTaskTransformer( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -523,7 +512,7 @@ void testTaskTransformerUsingSnfClaimWithSamhsa() { // Ignore metrics registry calls on the claim transformer; its not under test here ClaimTransformerInterface claimTransformer = - new SNFClaimTransformer(new MetricRegistry(), mockNpiOrgLookup, lookUpSamhsaSecurityTags); + new SNFClaimTransformer(new MetricRegistry(), mockNpiOrgLookup, securityTagManager); PatientClaimsEobTaskTransformer taskTransformer = new PatientClaimsEobTaskTransformer( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); @@ -559,7 +548,7 @@ void testGetFailureFromTaskTransformer() { setupClaimEntity(mockEntityManager, ClaimType.DME, clmMockCriteria, clmRoot); ClaimTransformerInterface claimTransformer = - new SNFClaimTransformer(metricRegistry, mockNpiOrgLookup, lookUpSamhsaSecurityTags); + new SNFClaimTransformer(metricRegistry, mockNpiOrgLookup, securityTagManager); PatientClaimsEobTaskTransformer taskTransformer = new PatientClaimsEobTaskTransformer( metricRegistry, mockSamhsaMatcher, mockDrugDisplayLookup, mockNpiOrgLookup); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformerTest.java index 6bf43e4f41..c921b65703 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformerTest.java @@ -18,8 +18,8 @@ import gov.cms.bfd.server.war.commons.CCWProcedure; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.CommonTransformerUtils; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; import java.math.BigDecimal; @@ -51,8 +51,8 @@ public final class SNFClaimTransformerTest { /** The Metric Registry to use for the test. */ @Mock MetricRegistry metricRegistry; - /** The lookUpSamhsaSecurityTags. */ - @Mock LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The securityTagManager. */ + @Mock SecurityTagManager securityTagManager; /** The metrics timer. Used for determining the timer was started. */ @Mock Timer metricsTimer; @@ -72,7 +72,7 @@ public void setup() throws IOException { snfClaimTransformer = new SNFClaimTransformer( - metricRegistry, NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); + metricRegistry, NPIOrgLookup.createNpiOrgLookup(), securityTagManager); } /** Releases the static mock NPIOrgLookup. */ diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SamhsaMatcherFromClaimTransformerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SamhsaMatcherFromClaimTransformerTest.java index f26c0f6bb0..fda40f910d 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SamhsaMatcherFromClaimTransformerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SamhsaMatcherFromClaimTransformerTest.java @@ -22,7 +22,7 @@ import gov.cms.bfd.server.war.ServerTestUtils; import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.IcdCode; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; @@ -118,7 +118,7 @@ public void after() { */ public static Stream data() throws IOException { NPIOrgLookup localNpiLookup = NPIOrgLookup.createNpiOrgLookup(); - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags = mock(LookUpSamhsaSecurityTags.class); + SecurityTagManager securityTagManager = mock(SecurityTagManager.class); InputStream npiDataStream = Thread.currentThread() @@ -128,47 +128,44 @@ public static Stream data() throws IOException { // Load and transform the various claim types for testing ClaimTransformerInterface claimTransformerInterface = - new InpatientClaimTransformer( - new MetricRegistry(), localNpiLookup, lookUpSamhsaSecurityTags); + new InpatientClaimTransformer(new MetricRegistry(), localNpiLookup, securityTagManager); ExplanationOfBenefit inpatientEob = claimTransformerInterface.transform(getClaim(InpatientClaim.class), false); String inpatientClaimType = TransformerUtils.getClaimType(inpatientEob).toString(); claimTransformerInterface = - new OutpatientClaimTransformer( - new MetricRegistry(), localNpiLookup, lookUpSamhsaSecurityTags); + new OutpatientClaimTransformer(new MetricRegistry(), localNpiLookup, securityTagManager); ExplanationOfBenefit outpatientEob = claimTransformerInterface.transform(getClaim(OutpatientClaim.class), false); String outpatientClaimType = TransformerUtils.getClaimType(outpatientEob).toString(); claimTransformerInterface = - new DMEClaimTransformer( - new MetricRegistry(), drugCodeDisplayLookup, lookUpSamhsaSecurityTags); + new DMEClaimTransformer(new MetricRegistry(), drugCodeDisplayLookup, securityTagManager); ExplanationOfBenefit dmeEob = claimTransformerInterface.transform(getClaim(DMEClaim.class), false); String dmeClaimType = TransformerUtils.getClaimType(dmeEob).toString(); claimTransformerInterface = - new HHAClaimTransformer(new MetricRegistry(), localNpiLookup, lookUpSamhsaSecurityTags); + new HHAClaimTransformer(new MetricRegistry(), localNpiLookup, securityTagManager); ExplanationOfBenefit hhaEob = claimTransformerInterface.transform(getClaim(HHAClaim.class), false); String hhaClaimType = TransformerUtils.getClaimType(hhaEob).toString(); claimTransformerInterface = - new HospiceClaimTransformer(new MetricRegistry(), localNpiLookup, lookUpSamhsaSecurityTags); + new HospiceClaimTransformer(new MetricRegistry(), localNpiLookup, securityTagManager); ExplanationOfBenefit hospiceEob = claimTransformerInterface.transform(getClaim(HospiceClaim.class), false); String hospiceClaimType = TransformerUtils.getClaimType(hospiceEob).toString(); claimTransformerInterface = - new SNFClaimTransformer(new MetricRegistry(), localNpiLookup, lookUpSamhsaSecurityTags); + new SNFClaimTransformer(new MetricRegistry(), localNpiLookup, securityTagManager); ExplanationOfBenefit snfEob = claimTransformerInterface.transform(getClaim(SNFClaim.class), false); String snfClaimType = TransformerUtils.getClaimType(snfEob).toString(); claimTransformerInterface = new CarrierClaimTransformer( - new MetricRegistry(), drugCodeDisplayLookup, localNpiLookup, lookUpSamhsaSecurityTags); + new MetricRegistry(), drugCodeDisplayLookup, localNpiLookup, securityTagManager); ExplanationOfBenefit carrierEob = claimTransformerInterface.transform(getClaim(CarrierClaim.class), false); String carrierClaimType = TransformerUtils.getClaimType(carrierEob).toString(); diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/LookUpSamhsaSecurityTagsTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SecurityTagManagerTest.java similarity index 76% rename from apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/LookUpSamhsaSecurityTagsTest.java rename to apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SecurityTagManagerTest.java index 235221554e..19e8340f9f 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/LookUpSamhsaSecurityTagsTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SecurityTagManagerTest.java @@ -5,20 +5,22 @@ import gov.cms.bfd.model.rif.samhsa.CarrierTag; import gov.cms.bfd.model.rif.samhsa.HospiceTag; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import jakarta.persistence.EntityManager; import jakarta.persistence.Query; import java.util.HashSet; +import java.util.List; import java.util.Set; import org.hl7.fhir.r4.model.CodeableConcept; +import org.hl7.fhir.r4.model.Coding; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -/** LookUpSamhsaSecurityTags test. */ -class LookUpSamhsaSecurityTagsTest { +/** securityTagManager test. */ +class SecurityTagManagerTest { /** The EntityManager. */ @Mock private EntityManager entityManager; @@ -26,8 +28,8 @@ class LookUpSamhsaSecurityTagsTest { /** Query. */ @Mock private Query query; - /** LookUpSamhsaSecurityTags. */ - @InjectMocks private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** securityTagManager. */ + @InjectMocks private SecurityTagManager securityTagManager; /** Set up the mocks and the validator being tested. */ @BeforeEach @@ -46,11 +48,11 @@ void testGetClaimSecurityLevel_Inpatient() { when(entityManager.createQuery(anyString())).thenReturn(query); when(query.getResultList()).thenReturn(new java.util.ArrayList<>(mockTags)); - String securityLevel = - lookUpSamhsaSecurityTags.getClaimSecurityLevel("12345", CarrierTag.class); + List securityLevel = + securityTagManager.getClaimSecurityLevel("12345", CarrierTag.class); assertEquals( "Restricted", - securityLevel, + securityLevel.getFirst().getDisplay(), "Security level should be 'Restricted' for Inpatient claim with 'R' tag"); } @@ -65,11 +67,11 @@ void testGetClaimSecurityLevel_Outpatient() { when(entityManager.createQuery(anyString())).thenReturn(query); when(query.getResultList()).thenReturn(new java.util.ArrayList<>(mockTags)); - String securityLevel = - lookUpSamhsaSecurityTags.getClaimSecurityLevel("67890", HospiceTag.class); + List securityLevel = + securityTagManager.getClaimSecurityLevel("67890", HospiceTag.class); assertEquals( "Normal", - securityLevel, + securityLevel.getFirst().getDisplay(), "Security level should be 'Normal' for Outpatient claim with 'NormalTag'"); } } diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/Stu3EobSamhsaMatcherTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/Stu3EobSamhsaMatcherTest.java index b5a3b7faaf..4074b749ad 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/Stu3EobSamhsaMatcherTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/Stu3EobSamhsaMatcherTest.java @@ -19,7 +19,7 @@ import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.IcdCode; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; @@ -55,8 +55,8 @@ @MockitoSettings(strictness = Strictness.LENIENT) public final class Stu3EobSamhsaMatcherTest { - /** The lookUpSamhsaSecurityTags. */ - @Mock private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The securityTagManager. */ + @Mock private SecurityTagManager securityTagManager; /** The SAMHSA CPT code. */ public static final String SAMPLE_SAMHSA_CPT_CODE = "G0137"; @@ -87,8 +87,6 @@ public final class Stu3EobSamhsaMatcherTest { @BeforeEach void setup() { npiOrgLookup = RDATestUtils.mockNPIOrgLookup(); - // when(lookUpSamhsaSecurityTags.getClaimSecurityLevel(anyString(), eq(HhaTag.class))) - // .thenReturn("Normal"); } /** Releases the static mock NPIOrgLookup and FdaDrugCodeDisplayLookup. */ @@ -197,7 +195,7 @@ public void nonSamhsaRelatedClaims() throws IOException { false, fdaDrugCodeDisplayLookup, localNpiLookup, - lookUpSamhsaSecurityTags); + securityTagManager); }) .filter(ExplanationOfBenefit.class::isInstance) .collect(Collectors.toList()); @@ -879,7 +877,7 @@ private ExplanationOfBenefit getSampleAClaim(ClaimType claimType) throws IOExcep false, RDATestUtils.fdaDrugCodeDisplayLookup(), NPIOrgLookup.createNpiOrgLookup(), - lookUpSamhsaSecurityTags); + securityTagManager); return sampleEobForClaimType; } diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/TransformerTestUtils.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/TransformerTestUtils.java index 2c8f66d6e5..4e53a38ee4 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/TransformerTestUtils.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/TransformerTestUtils.java @@ -39,8 +39,8 @@ import gov.cms.bfd.server.war.commons.CommonTransformerUtils; import gov.cms.bfd.server.war.commons.Diagnosis; import gov.cms.bfd.server.war.commons.IdentifierType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.MedicareSegment; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; import gov.cms.bfd.sharedutils.exceptions.BadCodeMonkeyException; @@ -2243,7 +2243,7 @@ static void assertLastUpdatedEquals( * @param includeTaxNumbers if tax numbers should be included in the response * @param drugCodeDisplayLookup the drug code display lookup * @param npiOrgLookup the npi org lookup - * @param lookUpSamhsaSecurityTags SamhsaSecurityTag lookup + * @param securityTagManager SamhsaSecurityTag lookup * @return the transformed {@link ExplanationOfBenefit} for the specified RIF record */ static ExplanationOfBenefit transformRifRecordToEob( @@ -2252,33 +2252,33 @@ static ExplanationOfBenefit transformRifRecordToEob( Boolean includeTaxNumbers, FdaDrugCodeDisplayLookup drugCodeDisplayLookup, NPIOrgLookup npiOrgLookup, - LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags) { + SecurityTagManager securityTagManager) { ClaimTransformerInterface claimTransformerInterface = null; if (rifRecord instanceof CarrierClaim) { claimTransformerInterface = new CarrierClaimTransformer( - metricRegistry, drugCodeDisplayLookup, npiOrgLookup, lookUpSamhsaSecurityTags); + metricRegistry, drugCodeDisplayLookup, npiOrgLookup, securityTagManager); } else if (rifRecord instanceof DMEClaim) { claimTransformerInterface = - new DMEClaimTransformer(metricRegistry, drugCodeDisplayLookup, lookUpSamhsaSecurityTags); + new DMEClaimTransformer(metricRegistry, drugCodeDisplayLookup, securityTagManager); } else if (rifRecord instanceof HHAClaim) { claimTransformerInterface = - new HHAClaimTransformer(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); + new HHAClaimTransformer(metricRegistry, npiOrgLookup, securityTagManager); } else if (rifRecord instanceof HospiceClaim) { claimTransformerInterface = - new HospiceClaimTransformer(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); + new HospiceClaimTransformer(metricRegistry, npiOrgLookup, securityTagManager); } else if (rifRecord instanceof InpatientClaim) { claimTransformerInterface = - new InpatientClaimTransformer(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); + new InpatientClaimTransformer(metricRegistry, npiOrgLookup, securityTagManager); } else if (rifRecord instanceof OutpatientClaim) { claimTransformerInterface = - new OutpatientClaimTransformer(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); + new OutpatientClaimTransformer(metricRegistry, npiOrgLookup, securityTagManager); } else if (rifRecord instanceof PartDEvent) { claimTransformerInterface = new PartDEventTransformer(metricRegistry, drugCodeDisplayLookup); } else if (rifRecord instanceof SNFClaim) { claimTransformerInterface = - new SNFClaimTransformer(metricRegistry, npiOrgLookup, lookUpSamhsaSecurityTags); + new SNFClaimTransformer(metricRegistry, npiOrgLookup, securityTagManager); } else { throw new BadCodeMonkeyException("Unhandled RifRecord type!"); } diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/TransformerUtilsTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/TransformerUtilsTest.java index 0ac0565a6a..5c73992e99 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/TransformerUtilsTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/TransformerUtilsTest.java @@ -27,9 +27,9 @@ import gov.cms.bfd.server.war.commons.CCWUtils; import gov.cms.bfd.server.war.commons.ClaimType; import gov.cms.bfd.server.war.commons.IdentifierType; -import gov.cms.bfd.server.war.commons.LookUpSamhsaSecurityTags; import gov.cms.bfd.server.war.commons.OffsetLinkBuilder; import gov.cms.bfd.server.war.commons.QueryUtils; +import gov.cms.bfd.server.war.commons.SecurityTagManager; import gov.cms.bfd.server.war.commons.TransformerConstants; import gov.cms.bfd.server.war.utils.RDATestUtils; import java.io.IOException; @@ -71,8 +71,8 @@ public final class TransformerUtilsTest { /** The NPI org lookup to use for the test. */ private MockedStatic npiOrgLookup; - /** The lookUpSamhsaSecurityTags. */ - @Mock private LookUpSamhsaSecurityTags lookUpSamhsaSecurityTags; + /** The securityTagManager. */ + @Mock private SecurityTagManager securityTagManager; /** One-time setup of objects that are normally injected. */ @BeforeEach @@ -445,7 +445,7 @@ public void createBundleWithoutPaging() throws IOException { FhirContext fhirContext = FhirContext.forDstu3(); ClaimTransformerInterface claimTransformerInterface = new HHAClaimTransformer( - new MetricRegistry(), NPIOrgLookup.createNpiOrgLookup(), lookUpSamhsaSecurityTags); + new MetricRegistry(), NPIOrgLookup.createNpiOrgLookup(), securityTagManager); ExplanationOfBenefit genEob = claimTransformerInterface.transform(claim, false); IParser parser = fhirContext.newJsonParser(); String json = parser.encodeResourceToString(genEob); @@ -502,7 +502,7 @@ public void createBundleWithPagingWithASizeOf2() throws IOException { MetricRegistry metricRegistry = new MetricRegistry(); ClaimTransformerInterface claimTransformerInterface = - new HHAClaimTransformer(metricRegistry, localNpiLookup, lookUpSamhsaSecurityTags); + new HHAClaimTransformer(metricRegistry, localNpiLookup, securityTagManager); ExplanationOfBenefit genEob = claimTransformerInterface.transform(hhaClaim, false); IParser parser = fhirContext.newJsonParser(); @@ -519,7 +519,7 @@ public void createBundleWithPagingWithASizeOf2() throws IOException { hospiceClaim.setLastUpdated(Instant.now()); claimTransformerInterface = - new HospiceClaimTransformer(metricRegistry, localNpiLookup, lookUpSamhsaSecurityTags); + new HospiceClaimTransformer(metricRegistry, localNpiLookup, securityTagManager); genEob = claimTransformerInterface.transform(hospiceClaim, false); parser = fhirContext.newJsonParser(); json = parser.encodeResourceToString(genEob); @@ -536,7 +536,7 @@ public void createBundleWithPagingWithASizeOf2() throws IOException { claimTransformerInterface = new DMEClaimTransformer( - metricRegistry, RDATestUtils.fdaDrugCodeDisplayLookup(), lookUpSamhsaSecurityTags); + metricRegistry, RDATestUtils.fdaDrugCodeDisplayLookup(), securityTagManager); genEob = claimTransformerInterface.transform(dmeClaim, false); parser = fhirContext.newJsonParser(); json = parser.encodeResourceToString(genEob); @@ -552,7 +552,7 @@ public void createBundleWithPagingWithASizeOf2() throws IOException { inpatientClaim.setLastUpdated(Instant.now()); claimTransformerInterface = - new InpatientClaimTransformer(metricRegistry, localNpiLookup, lookUpSamhsaSecurityTags); + new InpatientClaimTransformer(metricRegistry, localNpiLookup, securityTagManager); genEob = claimTransformerInterface.transform(inpatientClaim, false); parser = fhirContext.newJsonParser(); json = parser.encodeResourceToString(genEob); diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimFissRead.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimFissRead.json index 200fb8d0a8..498d42d611 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimFissRead.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimFissRead.json @@ -4,9 +4,9 @@ "meta": { "lastUpdated": "1970-08-01T00:00:00.000+00:00", "security" : [ { - "code" : "Normal", + "code" : "N", "display" : "Normal", - "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality" } ] }, "contained": [ diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimFissReadWithTaxNumbers.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimFissReadWithTaxNumbers.json index 74f9484e3a..14c5dfa657 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimFissReadWithTaxNumbers.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimFissReadWithTaxNumbers.json @@ -4,9 +4,9 @@ "meta": { "lastUpdated": "1970-08-01T00:00:00.000+00:00", "security" : [ { - "code" : "Normal", + "code" : "N", "display" : "Normal", - "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality" } ] }, "contained": [ diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimMcsRead.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimMcsRead.json index cbfff8e774..d312804ce6 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimMcsRead.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimMcsRead.json @@ -4,9 +4,9 @@ "meta": { "lastUpdated": "1970-01-01T00:00:04.000+00:00", "security" : [ { - "code" : "Normal", + "code" : "N", "display" : "Normal", - "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality" } ] }, "contained": [ diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimMcsReadWithTaxNumbers.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimMcsReadWithTaxNumbers.json index 87100ee1ea..7b5b96f167 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimMcsReadWithTaxNumbers.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimMcsReadWithTaxNumbers.json @@ -4,9 +4,9 @@ "meta": { "lastUpdated": "1970-01-01T00:00:04.000+00:00", "security" : [ { - "code" : "Normal", + "code" : "N", "display" : "Normal", - "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality" } ] }, "contained": [ diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseFissRead.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseFissRead.json index def51caf50..ffe84294c5 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseFissRead.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseFissRead.json @@ -4,9 +4,9 @@ "meta": { "lastUpdated": "1970-01-01T00:00:00.000+00:00", "security" : [ { - "code" : "Normal", + "code" : "N", "display" : "Normal", - "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality" } ] }, "contained": [ diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseMcsRead.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseMcsRead.json index 0d35dc498f..91a81b4e4a 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseMcsRead.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseMcsRead.json @@ -4,9 +4,9 @@ "meta": { "lastUpdated": "1970-01-01T00:00:04.000+00:00", "security" : [ { - "code" : "Normal", + "code" : "N", "display" : "Normal", - "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality" } ] }, "contained": [ diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseSearch.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseSearch.json index 2564c6dd16..17bd7a4c95 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseSearch.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseSearch.json @@ -20,9 +20,9 @@ "meta": { "lastUpdated": "1970-08-01T00:00:00.000+00:00", "security" : [ { - "code" : "Normal", + "code" : "N", "display" : "Normal", - "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality" } ] }, "contained": [ @@ -193,9 +193,9 @@ "meta": { "lastUpdated": "1970-01-01T00:00:04.000+00:00", "security" : [ { - "code" : "Normal", + "code" : "N", "display" : "Normal", - "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality" } ] }, "contained": [ diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseSearchPaginated.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseSearchPaginated.json index a16aa51499..b6de6f77b4 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseSearchPaginated.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimResponseSearchPaginated.json @@ -32,9 +32,9 @@ "meta": { "lastUpdated": "1970-01-01T00:00:04.000+00:00", "security" : [ { - "code" : "Normal", + "code" : "N", "display" : "Normal", - "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality" } ] }, "contained": [ diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearch.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearch.json index ae69be96f9..3c6be06a60 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearch.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearch.json @@ -20,9 +20,9 @@ "meta": { "lastUpdated": "1970-08-01T00:00:00.000+00:00", "security" : [ { - "code" : "Normal", + "code" : "N", "display" : "Normal", - "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality" } ] }, "contained": [ @@ -499,9 +499,9 @@ "meta": { "lastUpdated": "1970-01-01T00:00:04.000+00:00", "security" : [ { - "code" : "Normal", + "code" : "N", "display" : "Normal", - "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality" } ] }, "contained": [ diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearchPaginated.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearchPaginated.json index b56383fc2f..306b4c879f 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearchPaginated.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearchPaginated.json @@ -32,9 +32,9 @@ "meta": { "lastUpdated": "1970-01-01T00:00:04.000+00:00", "security" : [ { - "code" : "Normal", + "code" : "N", "display" : "Normal", - "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality" } ] }, "contained": [ diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearchWithTaxNumbers.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearchWithTaxNumbers.json index 1a4611ebe0..487afd7424 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearchWithTaxNumbers.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/claimSearchWithTaxNumbers.json @@ -20,9 +20,9 @@ "meta": { "lastUpdated": "1970-08-01T00:00:00.000+00:00", "security" : [ { - "code" : "Normal", + "code" : "N", "display" : "Normal", - "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality" } ] }, "contained": [ @@ -512,9 +512,9 @@ "meta": { "lastUpdated": "1970-01-01T00:00:04.000+00:00", "security" : [ { - "code" : "Normal", + "code" : "N", "display" : "Normal", - "system" : "https://terminology.hl7.org/6.1.0/CodeSystem-v3-Confidentiality.html" + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality" } ] }, "contained": [ From 0000292f865068f118a6f18be14d441f9a7d61a8 Mon Sep 17 00:00:00 2001 From: MahiFentaye <168698136+MahiFentaye@users.noreply.github.com> Date: Wed, 15 Jan 2025 13:38:45 -0500 Subject: [PATCH 08/13] BFD-3665 BFD-3665 updating unit test resources --- .../v1/eobByPatientIdAll.json | 49 ++++++++++++++++--- .../v1/eobByPatientIdPaged.json | 49 ++++++++++++++++--- .../endpoint-responses/v1/eobReadCarrier.json | 7 ++- .../v1/eobReadCarrierMultipleLines.json | 7 ++- .../v1/eobReadCarrierWithTaxNumbers.json | 7 ++- .../endpoint-responses/v1/eobReadDme.json | 7 ++- .../v1/eobReadDmeWithTaxNumbers.json | 7 ++- .../endpoint-responses/v1/eobReadHha.json | 7 ++- .../endpoint-responses/v1/eobReadHospice.json | 7 ++- .../v1/eobReadInpatient.json | 7 ++- .../v1/eobReadOutpatient.json | 7 ++- .../endpoint-responses/v1/eobReadSnf.json | 7 ++- .../v2/eobByPatientIdAll.json | 49 ++++++++++++++++--- .../v2/eobByPatientIdPaged.json | 49 ++++++++++++++++--- .../endpoint-responses/v2/eobReadCarrier.json | 7 ++- .../v2/eobReadCarrierWithMultipleLines.json | 7 ++- .../v2/eobReadCarrierWithTaxNumbers.json | 7 ++- .../endpoint-responses/v2/eobReadDme.json | 7 ++- .../v2/eobReadDmeWithTaxNumbers.json | 7 ++- .../endpoint-responses/v2/eobReadHha.json | 7 ++- .../endpoint-responses/v2/eobReadHospice.json | 7 ++- .../v2/eobReadInpatient.json | 7 ++- .../v2/eobReadOutpatient.json | 7 ++- .../endpoint-responses/v2/eobReadSnf.json | 7 ++- 24 files changed, 288 insertions(+), 48 deletions(-) diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobByPatientIdAll.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobByPatientIdAll.json index 219da9cae1..8a2504b7fc 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobByPatientIdAll.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobByPatientIdAll.json @@ -15,7 +15,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "outpatient-1234567890", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "extension" : [ { "url" : "https://bluebutton.cms.gov/resources/variables/nch_profnl_cmpnt_chrg_amt", @@ -657,7 +662,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "dme-2188888888", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "ReferralRequest", @@ -1167,7 +1177,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "hha-2925555555", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "extension" : [ { "url" : "https://bluebutton.cms.gov/resources/variables/clm_mdcr_non_pmt_rsn_cd", @@ -1607,7 +1622,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "inpatient-333333222222", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "extension" : [ { "url" : "https://bluebutton.cms.gov/resources/variables/ime_op_clm_val_amt", @@ -2440,7 +2460,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "snf-777777777", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "extension" : [ { "url" : "https://bluebutton.cms.gov/resources/variables/nch_bene_ip_ddctbl_amt", @@ -3555,7 +3580,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "carrier-9991831999", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "ReferralRequest", @@ -4087,7 +4117,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "hospice-9992223422", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "extension" : [ { "url" : "https://bluebutton.cms.gov/resources/variables/clm_mdcr_non_pmt_rsn_cd", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobByPatientIdPaged.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobByPatientIdPaged.json index b8da6ceb24..816b001288 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobByPatientIdPaged.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobByPatientIdPaged.json @@ -21,7 +21,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "outpatient-1234567890", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "extension" : [ { "url" : "https://bluebutton.cms.gov/resources/variables/nch_profnl_cmpnt_chrg_amt", @@ -663,7 +668,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "dme-2188888888", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "ReferralRequest", @@ -1173,7 +1183,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "hha-2925555555", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "extension" : [ { "url" : "https://bluebutton.cms.gov/resources/variables/clm_mdcr_non_pmt_rsn_cd", @@ -1613,7 +1628,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "inpatient-333333222222", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "extension" : [ { "url" : "https://bluebutton.cms.gov/resources/variables/ime_op_clm_val_amt", @@ -2446,7 +2466,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "snf-777777777", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "extension" : [ { "url" : "https://bluebutton.cms.gov/resources/variables/nch_bene_ip_ddctbl_amt", @@ -3561,7 +3586,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "carrier-9991831999", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "ReferralRequest", @@ -4093,7 +4123,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "hospice-9992223422", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "extension" : [ { "url" : "https://bluebutton.cms.gov/resources/variables/clm_mdcr_non_pmt_rsn_cd", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadCarrier.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadCarrier.json index 6b2d630f88..a86e2376b7 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadCarrier.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadCarrier.json @@ -2,7 +2,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "carrier-9991831999", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "ReferralRequest", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadCarrierMultipleLines.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadCarrierMultipleLines.json index 85a1709da8..0098b7ac01 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadCarrierMultipleLines.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadCarrierMultipleLines.json @@ -2,7 +2,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "carrier-9991831999", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "ReferralRequest", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadCarrierWithTaxNumbers.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadCarrierWithTaxNumbers.json index 916a8f5b97..96a72b51c6 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadCarrierWithTaxNumbers.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadCarrierWithTaxNumbers.json @@ -2,7 +2,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "carrier-9991831999", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "ReferralRequest", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadDme.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadDme.json index d6e63c4d7c..f49964daf0 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadDme.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadDme.json @@ -2,7 +2,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "dme-2188888888", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "ReferralRequest", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadDmeWithTaxNumbers.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadDmeWithTaxNumbers.json index a1981091b4..f00e015e7a 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadDmeWithTaxNumbers.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadDmeWithTaxNumbers.json @@ -2,7 +2,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "dme-2188888888", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "ReferralRequest", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadHha.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadHha.json index b7fdcf1ccd..8aa556ba78 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadHha.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadHha.json @@ -2,7 +2,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "hha-2925555555", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "extension" : [ { "url" : "https://bluebutton.cms.gov/resources/variables/clm_mdcr_non_pmt_rsn_cd", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadHospice.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadHospice.json index 9f0799aed6..74aad0e6fb 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadHospice.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadHospice.json @@ -2,7 +2,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "hospice-9992223422", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "extension" : [ { "url" : "https://bluebutton.cms.gov/resources/variables/clm_mdcr_non_pmt_rsn_cd", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadInpatient.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadInpatient.json index 03f90965ee..1e9a7b9cef 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadInpatient.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadInpatient.json @@ -2,7 +2,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "inpatient-333333222222", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "extension" : [ { "url" : "https://bluebutton.cms.gov/resources/variables/ime_op_clm_val_amt", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadOutpatient.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadOutpatient.json index 0bef57a12a..0c14ea7c5d 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadOutpatient.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadOutpatient.json @@ -2,7 +2,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "outpatient-1234567890", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "extension" : [ { "url" : "https://bluebutton.cms.gov/resources/variables/nch_profnl_cmpnt_chrg_amt", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadSnf.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadSnf.json index 3b67e8b639..41ab47807a 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadSnf.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobReadSnf.json @@ -2,7 +2,12 @@ "resourceType" : "ExplanationOfBenefit", "id" : "snf-777777777", "meta" : { - "lastUpdated" : "IGNORED_FIELD" + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "extension" : [ { "url" : "https://bluebutton.cms.gov/resources/variables/nch_bene_ip_ddctbl_amt", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobByPatientIdAll.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobByPatientIdAll.json index 1fca0562c4..41ee942125 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobByPatientIdAll.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobByPatientIdAll.json @@ -16,7 +16,12 @@ "id" : "outpatient-1234567890", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Outpatient-Institutional" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Outpatient-Institutional" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Organization", @@ -898,7 +903,12 @@ "id" : "dme-2188888888", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Observation", @@ -1621,7 +1631,12 @@ "id" : "hha-2925555555", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Professional-NonClinician" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Professional-NonClinician" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Organization", @@ -2247,7 +2262,12 @@ "id" : "inpatient-333333222222", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Organization", @@ -3376,7 +3396,12 @@ "id" : "snf-777777777", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Organization", @@ -4871,7 +4896,12 @@ "id" : "carrier-9991831999", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Professional-NonClinician" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Professional-NonClinician" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Observation", @@ -5624,7 +5654,12 @@ "id" : "hospice-9992223422", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Organization", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobByPatientIdPaged.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobByPatientIdPaged.json index 236e7f5e3f..743ea0b866 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobByPatientIdPaged.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobByPatientIdPaged.json @@ -22,7 +22,12 @@ "id" : "outpatient-1234567890", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Outpatient-Institutional" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Outpatient-Institutional" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Organization", @@ -904,7 +909,12 @@ "id" : "dme-2188888888", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Observation", @@ -1627,7 +1637,12 @@ "id" : "hha-2925555555", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Professional-NonClinician" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Professional-NonClinician" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Organization", @@ -2253,7 +2268,12 @@ "id" : "inpatient-333333222222", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Organization", @@ -3382,7 +3402,12 @@ "id" : "snf-777777777", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Organization", @@ -4877,7 +4902,12 @@ "id" : "carrier-9991831999", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Professional-NonClinician" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Professional-NonClinician" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Observation", @@ -5630,7 +5660,12 @@ "id" : "hospice-9992223422", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Organization", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadCarrier.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadCarrier.json index 25aed327fd..0bd1add680 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadCarrier.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadCarrier.json @@ -3,7 +3,12 @@ "id" : "carrier-9991831999", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Professional-NonClinician" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Professional-NonClinician" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Observation", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadCarrierWithMultipleLines.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadCarrierWithMultipleLines.json index 98785a3b7d..530ab71b97 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadCarrierWithMultipleLines.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadCarrierWithMultipleLines.json @@ -3,7 +3,12 @@ "id" : "carrier-9991831999", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Professional-NonClinician" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Professional-NonClinician" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Observation", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadCarrierWithTaxNumbers.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadCarrierWithTaxNumbers.json index 480cbe8525..275e8ec4c6 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadCarrierWithTaxNumbers.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadCarrierWithTaxNumbers.json @@ -3,7 +3,12 @@ "id" : "carrier-9991831999", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Professional-NonClinician" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Professional-NonClinician" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Observation", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadDme.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadDme.json index 9080451cf7..cc3891910b 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadDme.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadDme.json @@ -3,7 +3,12 @@ "id" : "dme-2188888888", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Observation", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadDmeWithTaxNumbers.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadDmeWithTaxNumbers.json index 19d74d6999..a38f82492f 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadDmeWithTaxNumbers.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadDmeWithTaxNumbers.json @@ -3,7 +3,12 @@ "id" : "dme-2188888888", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Observation", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadHha.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadHha.json index 1de9dda4f1..f0bdb33bde 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadHha.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadHha.json @@ -3,7 +3,12 @@ "id" : "hha-2925555555", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Professional-NonClinician" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Professional-NonClinician" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Organization", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadHospice.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadHospice.json index 75f5dfeff9..f63de3d2b0 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadHospice.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadHospice.json @@ -3,7 +3,12 @@ "id" : "hospice-9992223422", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Organization", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadInpatient.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadInpatient.json index 494e7014a4..391c484054 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadInpatient.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadInpatient.json @@ -3,7 +3,12 @@ "id" : "inpatient-333333222222", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Organization", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadOutpatient.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadOutpatient.json index 5bc81db5aa..1e5a01fe0a 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadOutpatient.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadOutpatient.json @@ -3,7 +3,12 @@ "id" : "outpatient-1234567890", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Outpatient-Institutional" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Outpatient-Institutional" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Organization", diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadSnf.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadSnf.json index 4187358b5f..7b7eab516b 100644 --- a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadSnf.json +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadSnf.json @@ -3,7 +3,12 @@ "id" : "snf-777777777", "meta" : { "lastUpdated" : "IGNORED_FIELD", - "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ] + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Inpatient-Institutional" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "N", + "display" : "Normal" + } ] }, "contained" : [ { "resourceType" : "Organization", From fcede8dfd68053b504a9113885c5a7c3e30854b5 Mon Sep 17 00:00:00 2001 From: MahiFentaye <168698136+MahiFentaye@users.noreply.github.com> Date: Wed, 15 Jan 2025 13:56:28 -0500 Subject: [PATCH 09/13] Update SecurityTagManager.java updating the 42CFRPart2 tag display --- .../java/gov/cms/bfd/server/war/commons/SecurityTagManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/SecurityTagManager.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/SecurityTagManager.java index f8dde514f6..edfb2fa489 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/SecurityTagManager.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/SecurityTagManager.java @@ -104,7 +104,7 @@ public List getClaimSecurityLevel(String claimId, Class tagClass) { coding .setSystem("http://terminology.hl7.org/CodeSystem/v3-ActCode") .setCode("42CFRPart2") - .setDisplay("Substance Use Disorder (SAMHSA)"); + .setDisplay("42 CFR Part 2"); break; default: From ce1310054783e6f744566780246c28a5ae0b1b3e Mon Sep 17 00:00:00 2001 From: MahiFentaye <168698136+MahiFentaye@users.noreply.github.com> Date: Tue, 21 Jan 2025 15:04:56 -0500 Subject: [PATCH 10/13] BFD-3665 refactored enum and update libraries and created constants for the urls --- .../pipeline/ccw/rif/load/RifLoaderIT.java | 2 +- .../bfd/pipeline/sharedutils/SamhsaUtil.java | 2 +- .../adapters/SamhsaCarrierAdapter.java | 2 +- .../adapters/SamhsaDmeAdapter.java | 2 +- .../adapters/SamhsaHHAAdapter.java | 2 +- .../adapters/SamhsaHospiceAdapter.java | 2 +- .../adapters/SamhsaInpatientAdapter.java | 2 +- .../adapters/SamhsaOutpatientAdapter.java | 2 +- .../adapters/SamhsaSnfAdapter.java | 3 +- .../pipeline/sharedutils/model/TagCode.java | 26 ------- .../war/commons/SecurityTagManager.java | 67 +++++++------------ .../war/commons/TransformerConstants.java | 14 ++++ .../java/gov/cms/bfd/sharedutils/TagCode.java | 43 ++++++++++++ 13 files changed, 92 insertions(+), 77 deletions(-) delete mode 100644 apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/model/TagCode.java create mode 100644 apps/bfd-shared-utils/src/main/java/gov/cms/bfd/sharedutils/TagCode.java diff --git a/apps/bfd-pipeline/bfd-pipeline-ccw-rif/src/test/java/gov/cms/bfd/pipeline/ccw/rif/load/RifLoaderIT.java b/apps/bfd-pipeline/bfd-pipeline-ccw-rif/src/test/java/gov/cms/bfd/pipeline/ccw/rif/load/RifLoaderIT.java index 99f71b0ea6..06c4a042ce 100644 --- a/apps/bfd-pipeline/bfd-pipeline-ccw-rif/src/test/java/gov/cms/bfd/pipeline/ccw/rif/load/RifLoaderIT.java +++ b/apps/bfd-pipeline/bfd-pipeline-ccw-rif/src/test/java/gov/cms/bfd/pipeline/ccw/rif/load/RifLoaderIT.java @@ -42,7 +42,7 @@ import gov.cms.bfd.pipeline.ccw.rif.extract.s3.DataSetManifest.DataSetManifestEntry; import gov.cms.bfd.pipeline.ccw.rif.extract.s3.DataSetManifest.PreValidationProperties; import gov.cms.bfd.pipeline.sharedutils.IdHasher; -import gov.cms.bfd.pipeline.sharedutils.model.TagCode; +import gov.cms.bfd.sharedutils.TagCode; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.EntityTransaction; diff --git a/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/SamhsaUtil.java b/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/SamhsaUtil.java index 5dbb9600d8..0f27d1b866 100644 --- a/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/SamhsaUtil.java +++ b/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/SamhsaUtil.java @@ -27,8 +27,8 @@ import gov.cms.bfd.pipeline.sharedutils.adapters.SamhsaOutpatientAdapter; import gov.cms.bfd.pipeline.sharedutils.adapters.SamhsaSnfAdapter; import gov.cms.bfd.pipeline.sharedutils.model.SamhsaEntry; -import gov.cms.bfd.pipeline.sharedutils.model.TagCode; import gov.cms.bfd.pipeline.sharedutils.model.TagDetails; +import gov.cms.bfd.sharedutils.TagCode; import jakarta.persistence.EntityManager; import java.io.IOException; import java.io.InputStream; diff --git a/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaCarrierAdapter.java b/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaCarrierAdapter.java index ec8c3340ac..d10aa5ee66 100644 --- a/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaCarrierAdapter.java +++ b/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaCarrierAdapter.java @@ -7,8 +7,8 @@ import gov.cms.bfd.model.rif.samhsa.CarrierTag; import gov.cms.bfd.pipeline.sharedutils.SamhsaUtil; import gov.cms.bfd.pipeline.sharedutils.model.SamhsaFields; -import gov.cms.bfd.pipeline.sharedutils.model.TagCode; import gov.cms.bfd.pipeline.sharedutils.model.TagDetails; +import gov.cms.bfd.sharedutils.TagCode; import jakarta.persistence.EntityManager; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; diff --git a/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaDmeAdapter.java b/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaDmeAdapter.java index 5fc1ec970d..91bf5637d0 100644 --- a/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaDmeAdapter.java +++ b/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaDmeAdapter.java @@ -7,8 +7,8 @@ import gov.cms.bfd.model.rif.samhsa.DmeTag; import gov.cms.bfd.pipeline.sharedutils.SamhsaUtil; import gov.cms.bfd.pipeline.sharedutils.model.SamhsaFields; -import gov.cms.bfd.pipeline.sharedutils.model.TagCode; import gov.cms.bfd.pipeline.sharedutils.model.TagDetails; +import gov.cms.bfd.sharedutils.TagCode; import jakarta.persistence.EntityManager; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; diff --git a/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaHHAAdapter.java b/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaHHAAdapter.java index 5738bf5750..67d2e5d49c 100644 --- a/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaHHAAdapter.java +++ b/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaHHAAdapter.java @@ -7,8 +7,8 @@ import gov.cms.bfd.model.rif.samhsa.HhaTag; import gov.cms.bfd.pipeline.sharedutils.SamhsaUtil; import gov.cms.bfd.pipeline.sharedutils.model.SamhsaFields; -import gov.cms.bfd.pipeline.sharedutils.model.TagCode; import gov.cms.bfd.pipeline.sharedutils.model.TagDetails; +import gov.cms.bfd.sharedutils.TagCode; import jakarta.persistence.EntityManager; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; diff --git a/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaHospiceAdapter.java b/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaHospiceAdapter.java index 24206571bd..cf884fad1a 100644 --- a/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaHospiceAdapter.java +++ b/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaHospiceAdapter.java @@ -7,8 +7,8 @@ import gov.cms.bfd.model.rif.samhsa.HospiceTag; import gov.cms.bfd.pipeline.sharedutils.SamhsaUtil; import gov.cms.bfd.pipeline.sharedutils.model.SamhsaFields; -import gov.cms.bfd.pipeline.sharedutils.model.TagCode; import gov.cms.bfd.pipeline.sharedutils.model.TagDetails; +import gov.cms.bfd.sharedutils.TagCode; import jakarta.persistence.EntityManager; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; diff --git a/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaInpatientAdapter.java b/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaInpatientAdapter.java index 7a20cf1d0e..7bf07d9b08 100644 --- a/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaInpatientAdapter.java +++ b/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaInpatientAdapter.java @@ -7,8 +7,8 @@ import gov.cms.bfd.model.rif.samhsa.InpatientTag; import gov.cms.bfd.pipeline.sharedutils.SamhsaUtil; import gov.cms.bfd.pipeline.sharedutils.model.SamhsaFields; -import gov.cms.bfd.pipeline.sharedutils.model.TagCode; import gov.cms.bfd.pipeline.sharedutils.model.TagDetails; +import gov.cms.bfd.sharedutils.TagCode; import jakarta.persistence.EntityManager; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; diff --git a/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaOutpatientAdapter.java b/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaOutpatientAdapter.java index 242046dae4..07c5760477 100644 --- a/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaOutpatientAdapter.java +++ b/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaOutpatientAdapter.java @@ -7,8 +7,8 @@ import gov.cms.bfd.model.rif.samhsa.OutpatientTag; import gov.cms.bfd.pipeline.sharedutils.SamhsaUtil; import gov.cms.bfd.pipeline.sharedutils.model.SamhsaFields; -import gov.cms.bfd.pipeline.sharedutils.model.TagCode; import gov.cms.bfd.pipeline.sharedutils.model.TagDetails; +import gov.cms.bfd.sharedutils.TagCode; import jakarta.persistence.EntityManager; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; diff --git a/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaSnfAdapter.java b/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaSnfAdapter.java index 4afdbba113..5cc6509846 100644 --- a/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaSnfAdapter.java +++ b/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/adapters/SamhsaSnfAdapter.java @@ -1,6 +1,5 @@ package gov.cms.bfd.pipeline.sharedutils.adapters; -import static java.util.Map.*; import static java.util.Map.entry; import gov.cms.bfd.model.rif.entities.SNFClaim; @@ -8,8 +7,8 @@ import gov.cms.bfd.model.rif.samhsa.SnfTag; import gov.cms.bfd.pipeline.sharedutils.SamhsaUtil; import gov.cms.bfd.pipeline.sharedutils.model.SamhsaFields; -import gov.cms.bfd.pipeline.sharedutils.model.TagCode; import gov.cms.bfd.pipeline.sharedutils.model.TagDetails; +import gov.cms.bfd.sharedutils.TagCode; import jakarta.persistence.EntityManager; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; diff --git a/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/model/TagCode.java b/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/model/TagCode.java deleted file mode 100644 index 6fb7ee60ee..0000000000 --- a/apps/bfd-pipeline/bfd-pipeline-shared-utils/src/main/java/gov/cms/bfd/pipeline/sharedutils/model/TagCode.java +++ /dev/null @@ -1,26 +0,0 @@ -package gov.cms.bfd.pipeline.sharedutils.model; - -/** ENUM of TAG codes. */ -public enum TagCode { - /** Tag Code R. */ - R("R"), - /** Tag Code 42CFRPart2. */ - _42CFRPart2("42CFRPart2"); - - /** Name of the enum in the DB. */ - private String dbName; - - /** - * Constructor. - * - * @param dbName Sets the DB name of the enum. - */ - TagCode(String dbName) { - this.dbName = dbName; - } - - @Override - public String toString() { - return this.dbName; - } -} diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/SecurityTagManager.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/SecurityTagManager.java index edfb2fa489..8082ecf185 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/SecurityTagManager.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/SecurityTagManager.java @@ -1,5 +1,6 @@ package gov.cms.bfd.server.war.commons; +import gov.cms.bfd.sharedutils.TagCode; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; import jakarta.persistence.Query; @@ -34,7 +35,7 @@ public void setEntityManager(EntityManager entityManager) { * @param tagClass the name of the tag class * @return queryTagsForClaim */ - private Set queryTagsForClaim(String claimId, Class tagClass) { + public Set queryTagsForClaim(String claimId, Class tagClass) { String sql = "SELECT t.code FROM " + tagClass.getSimpleName() + " t WHERE t.claim = :claim"; @@ -47,24 +48,6 @@ private Set queryTagsForClaim(String claimId, Class tagClass) { return new HashSet<>(resultList); } - /** - * Determines the security level based on the collected tags. - * - * @param securityTags value of securityTags - * @return SecurityLevel - */ - private String determineSecurityLevel(Set securityTags) { - // Define the rules for security levels based on tag codes - for (String tag : securityTags) { - if ("R".equals(tag) || "42CFRPart2".equals(tag)) { - return "Restricted"; // Sensitive data - } - } - - // Default to 'Normal' if no sensitive tags are found - return "Normal"; - } - /** * Determines the security level based on the collected tags. * @@ -91,29 +74,31 @@ public List getClaimSecurityLevel(String claimId, Class tagClass) { // Check for each tag and set corresponding code and display for (String securityTag : securityTags) { Coding coding = new Coding(); - + // Convert the securityTag string to the TagCode enum + TagCode tagCode = TagCode.fromString(securityTag); // Check each security tag and apply corresponding values - switch (securityTag) { - case "R": - coding - .setSystem("http://terminology.hl7.org/CodeSystem/v3-Confidentiality") - .setCode("R") - .setDisplay("Restricted"); - break; - case "42CFRPart2": - coding - .setSystem("http://terminology.hl7.org/CodeSystem/v3-ActCode") - .setCode("42CFRPart2") - .setDisplay("42 CFR Part 2"); - break; - - default: - coding - .setSystem("http://terminology.hl7.org/CodeSystem/v3-Confidentiality") - .setCode("N") // Default to 'Normal' if unrecognized - .setDisplay("Normal"); + if (tagCode != null) { + switch (tagCode) { + case R: + coding + .setSystem(TransformerConstants.SAMHSA_CONFIDENTIALITY_CODE_SYSTEM_URL) + .setCode(TagCode.R.toString()) + .setDisplay("Restricted"); + break; + case _42CFRPart2: + coding + .setSystem(TransformerConstants.SAMHSA_ACT_CODE_SYSTEM_URL) + .setCode(TagCode._42CFRPart2.toString()) + .setDisplay("42 CFR Part 2"); + break; + + default: + coding + .setSystem(TransformerConstants.SAMHSA_CONFIDENTIALITY_CODE_SYSTEM_URL) + .setCode("N") // Default to 'Normal' if unrecognized + .setDisplay("Normal"); + } } - securityTagCoding.add(coding); } } @@ -137,7 +122,7 @@ public List getClaimSecurityLevelDstu3( org.hl7.fhir.dstu3.model.Coding securityTag = new org.hl7.fhir.dstu3.model.Coding(); securityTag .setSystem("http://terminology.hl7.org/CodeSystem/v3-Confidentiality") - .setCode(code.getCode()) // Default to 'Normal' if unrecognized + .setCode(code.getCode()) .setDisplay(code.getDisplay()); securityTagCoding.add(securityTag); diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/TransformerConstants.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/TransformerConstants.java index 0c2994bee0..0a5d787bb0 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/TransformerConstants.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/TransformerConstants.java @@ -703,4 +703,18 @@ public enum CurrencyIdentifier { */ public static final String C4DIC_LOGO_URL = "https://www.hhs.gov/sites/default/files/logo-white-lg.png"; + + /** + * URL for C4DIC Logo C4DIC + * Logo . + */ + public static final String SAMHSA_CONFIDENTIALITY_CODE_SYSTEM_URL = + "http://terminology.hl7.org/CodeSystem/v3-Confidentiality"; + + /** + * URL for C4DIC Logo C4DIC + * Logo . + */ + public static final String SAMHSA_ACT_CODE_SYSTEM_URL = + "http://terminology.hl7.org/CodeSystem/v3-ActCode"; } diff --git a/apps/bfd-shared-utils/src/main/java/gov/cms/bfd/sharedutils/TagCode.java b/apps/bfd-shared-utils/src/main/java/gov/cms/bfd/sharedutils/TagCode.java new file mode 100644 index 0000000000..05cfbb862e --- /dev/null +++ b/apps/bfd-shared-utils/src/main/java/gov/cms/bfd/sharedutils/TagCode.java @@ -0,0 +1,43 @@ +package gov.cms.bfd.sharedutils; + +/** ENUM of TAG codes. */ +public enum TagCode { + /** Tag Code R. */ + R("R"), + /** Tag Code 42CFRPart2. */ + _42CFRPart2("42CFRPart2"); + + /** Name of the enum in the DB. */ + private String dbName; + + /** + * Constructor. + * + * @param dbName Sets the DB name of the enum. + */ + TagCode(String dbName) { + this.dbName = dbName; + } + + @Override + public String toString() { + return this.dbName; + } + + /** + * Converts a string from the DB to the corresponding TagCode enum. + * + * @param text The string value from the DB. + * @return The corresponding TagCode enum, or null if no match is found. + */ + public static TagCode fromString(String text) { + if (text != null) { + for (TagCode tag : TagCode.values()) { + if (tag.dbName.equalsIgnoreCase(text)) { + return tag; + } + } + } + return null; + } +} From 20e6c99ce7f311b3a0ae4886cd016320576e5acf Mon Sep 17 00:00:00 2001 From: MahiFentaye <168698136+MahiFentaye@users.noreply.github.com> Date: Wed, 22 Jan 2025 10:25:27 -0500 Subject: [PATCH 11/13] BFD-2665 converting to constructor injection and BFD-2665 converting to constructor injection and --- .../war/r4/providers/CarrierClaimTransformerV2.java | 5 ++--- .../server/war/r4/providers/DMEClaimTransformerV2.java | 5 ++--- .../server/war/r4/providers/HHAClaimTransformerV2.java | 5 ++--- .../war/r4/providers/HospiceClaimTransformerV2.java | 5 ++--- .../war/r4/providers/InpatientClaimTransformerV2.java | 5 ++--- .../war/r4/providers/OutpatientClaimTransformerV2.java | 5 ++--- .../server/war/r4/providers/SNFClaimTransformerV2.java | 5 ++--- .../providers/pac/FissClaimResponseTransformerV2.java | 10 ++++++---- .../war/r4/providers/pac/FissClaimTransformerV2.java | 5 ++--- .../providers/pac/McsClaimResponseTransformerV2.java | 10 ++++++---- .../war/r4/providers/pac/McsClaimTransformerV2.java | 5 ++--- .../war/stu3/providers/CarrierClaimTransformer.java | 5 ++--- .../server/war/stu3/providers/DMEClaimTransformer.java | 5 ++--- .../server/war/stu3/providers/HHAClaimTransformer.java | 5 ++--- .../war/stu3/providers/HospiceClaimTransformer.java | 5 ++--- .../war/stu3/providers/InpatientClaimTransformer.java | 5 ++--- .../war/stu3/providers/OutpatientClaimTransformer.java | 5 ++--- .../server/war/stu3/providers/SNFClaimTransformer.java | 5 ++--- .../war/stu3/providers/SecurityTagManagerTest.java | 4 ++-- 19 files changed, 46 insertions(+), 58 deletions(-) diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java index 9214b19d7c..be90f6dbac 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/CarrierClaimTransformerV2.java @@ -31,7 +31,6 @@ import org.hl7.fhir.r4.model.ExplanationOfBenefit.CareTeamComponent; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.r4.model.Reference; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -53,8 +52,8 @@ final class CarrierClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(CarrierClaimTransformerV2.class.getSimpleName(), "transform"); - /** Injecting securityTagManager. */ - @Autowired private SecurityTagManager securityTagManager; + /** The securityTagManager. */ + private final SecurityTagManager securityTagManager; /** * Instantiates a new transformer. diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java index 59d055b495..0cffc598d5 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/DMEClaimTransformerV2.java @@ -31,7 +31,6 @@ import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.r4.model.Extension; import org.hl7.fhir.r4.model.Quantity; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms CCW {@link DMEClaim} instances into FHIR {@link ExplanationOfBenefit} resources. */ @@ -51,8 +50,8 @@ final class DMEClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(DMEClaimTransformerV2.class.getSimpleName(), "transform"); - /** Injecting securityTagManager. */ - @Autowired private SecurityTagManager securityTagManager; + /** The securityTagManager. */ + private final SecurityTagManager securityTagManager; /** * Instantiates a new transformer. diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java index be07805fa5..4dcc0e74ff 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HHAClaimTransformerV2.java @@ -27,7 +27,6 @@ import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.r4.model.Quantity; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms CCW {@link HHAClaim} instances into FHIR {@link ExplanationOfBenefit} resources. */ @@ -44,8 +43,8 @@ final class HHAClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(HHAClaimTransformerV2.class.getSimpleName(), "transform"); - /** Injecting securityTagManager. */ - @Autowired private SecurityTagManager securityTagManager; + /** The securityTagManager. */ + private final SecurityTagManager securityTagManager; /** * Instantiates a new transformer. diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java index 1e21cc3eb6..270da08de7 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/HospiceClaimTransformerV2.java @@ -27,7 +27,6 @@ import org.hl7.fhir.r4.model.Coding; import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -46,8 +45,8 @@ final class HospiceClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(HospiceClaimTransformerV2.class.getSimpleName(), "transform"); - /** Injecting securityTagManager. */ - @Autowired private SecurityTagManager securityTagManager; + /** The securityTagManager. */ + private final SecurityTagManager securityTagManager; /** * Instantiates a new transformer. diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java index 43a666a302..ee27dd6294 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/InpatientClaimTransformerV2.java @@ -28,7 +28,6 @@ import org.hl7.fhir.r4.model.Coding; import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -47,8 +46,8 @@ final class InpatientClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(InpatientClaimTransformerV2.class.getSimpleName(), "transform"); - /** Injecting securityTagManager. */ - @Autowired private SecurityTagManager securityTagManager; + /** The securityTagManager. */ + private final SecurityTagManager securityTagManager; /** * Instantiates a new transformer. diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java index 45d0617078..b2dda26063 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/OutpatientClaimTransformerV2.java @@ -29,7 +29,6 @@ import org.hl7.fhir.r4.model.Coding; import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -52,8 +51,8 @@ final class OutpatientClaimTransformerV2 implements ClaimTransformerInterfaceV2 private static final String METRIC_NAME = MetricRegistry.name(OutpatientClaimTransformerV2.class.getSimpleName(), "transform"); - /** Injecting securityTagManager. */ - @Autowired private SecurityTagManager securityTagManager; + /** The securityTagManager. */ + private final SecurityTagManager securityTagManager; /** * Instantiates a new transformer. diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java index 2d0480a025..a101bfa111 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/SNFClaimTransformerV2.java @@ -30,7 +30,6 @@ import org.hl7.fhir.r4.model.ExplanationOfBenefit; import org.hl7.fhir.r4.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.r4.model.Period; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms CCW {@link SNFClaim} instances into FHIR {@link ExplanationOfBenefit} resources. */ @@ -47,8 +46,8 @@ public class SNFClaimTransformerV2 implements ClaimTransformerInterfaceV2 { private static final String METRIC_NAME = MetricRegistry.name(SNFClaimTransformerV2.class.getSimpleName(), "transform"); - /** Injecting securityTagManager. */ - @Autowired private SecurityTagManager securityTagManager; + /** The securityTagManager. */ + private final SecurityTagManager securityTagManager; /** * Instantiates a new transformer. diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java index b63df299df..76f64a8581 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimResponseTransformerV2.java @@ -29,7 +29,6 @@ import org.hl7.fhir.r4.model.Meta; import org.hl7.fhir.r4.model.Reference; import org.hl7.fhir.r4.model.codesystems.ClaimType; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms FISS/MCS instances into FHIR {@link ClaimResponse} resources. */ @@ -44,8 +43,8 @@ public class FissClaimResponseTransformerV2 extends AbstractTransformerV2 private static final String METRIC_NAME = MetricRegistry.name(FissClaimResponseTransformerV2.class.getSimpleName(), "transform"); - /** Injecting securityTagManager. */ - @Autowired private SecurityTagManager securityTagManager; + /** The securityTagManager. */ + private final SecurityTagManager securityTagManager; /** * The known FISS status codes and their associated {@link ClaimResponse.RemittanceOutcome} @@ -73,10 +72,13 @@ public class FissClaimResponseTransformerV2 extends AbstractTransformerV2 * called by tests. * * @param metricRegistry the metric registry + * @param securityTagManager the security tag manager */ - public FissClaimResponseTransformerV2(MetricRegistry metricRegistry) { + public FissClaimResponseTransformerV2( + MetricRegistry metricRegistry, SecurityTagManager securityTagManager) { requireNonNull(metricRegistry); this.metricRegistry = metricRegistry; + this.securityTagManager = securityTagManager; } /** diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java index b43867ad6a..d4f0c56fda 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/FissClaimTransformerV2.java @@ -47,7 +47,6 @@ import org.hl7.fhir.r4.model.codesystems.ClaimType; import org.hl7.fhir.r4.model.codesystems.ExDiagnosistype; import org.hl7.fhir.r4.model.codesystems.ProcessPriority; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms FISS/MCS instances into FHIR {@link Claim} resources. */ @@ -65,8 +64,8 @@ public class FissClaimTransformerV2 extends AbstractTransformerV2 /** The Metric registry. */ private final MetricRegistry metricRegistry; - /** Injecting securityTagManager. */ - @Autowired private SecurityTagManager securityTagManager; + /** The securityTagManager. */ + private final SecurityTagManager securityTagManager; /** The METRIC_NAME constant. */ private static final String METRIC_NAME = diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java index fd8b6fdb8f..69dfffd695 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimResponseTransformerV2.java @@ -24,7 +24,6 @@ import org.hl7.fhir.r4.model.Meta; import org.hl7.fhir.r4.model.Reference; import org.hl7.fhir.r4.model.codesystems.ClaimType; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms FISS/MCS instances into FHIR {@link ClaimResponse} resources. */ @@ -39,8 +38,8 @@ public class McsClaimResponseTransformerV2 extends AbstractTransformerV2 private static final String METRIC_NAME = MetricRegistry.name(McsClaimResponseTransformerV2.class.getSimpleName(), "transform"); - /** Injecting securityTagManager. */ - @Autowired private SecurityTagManager securityTagManager; + /** The securityTagManager. */ + private final SecurityTagManager securityTagManager; /** * There are only 2 statuses currently being used, and only the ones listed below are mapped to @@ -89,9 +88,12 @@ public class McsClaimResponseTransformerV2 extends AbstractTransformerV2 * Instantiates a new Mcs claim response transformer v2. @param metricRegistry the metric registry * * @param metricRegistry the metric registry + * @param securityTagManager the security tag manager */ - public McsClaimResponseTransformerV2(MetricRegistry metricRegistry) { + public McsClaimResponseTransformerV2( + MetricRegistry metricRegistry, SecurityTagManager securityTagManager) { this.metricRegistry = metricRegistry; + this.securityTagManager = securityTagManager; } /** diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java index d45f7d0daf..4ac1b9b8d2 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/r4/providers/pac/McsClaimTransformerV2.java @@ -40,7 +40,6 @@ import org.hl7.fhir.r4.model.Resource; import org.hl7.fhir.r4.model.codesystems.ClaimType; import org.hl7.fhir.r4.model.codesystems.ProcessPriority; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms FISS/MCS instances into FHIR {@link Claim} resources. */ @@ -49,8 +48,8 @@ public class McsClaimTransformerV2 extends AbstractTransformerV2 implements ResourceTransformer { - /** Injecting securityTagManager. */ - @Autowired private SecurityTagManager securityTagManager; + /** The securityTagManager. */ + private final SecurityTagManager securityTagManager; /** The metric name. */ private static final String METRIC_NAME = diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformer.java index c2352ad173..b7446323b2 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/CarrierClaimTransformer.java @@ -27,7 +27,6 @@ import org.hl7.fhir.dstu3.model.ExplanationOfBenefit; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.dstu3.model.codesystems.ClaimCareteamrole; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms {@link CarrierClaim} instances into FHIR {@link ExplanationOfBenefit} resources. */ @@ -47,8 +46,8 @@ final class CarrierClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(CarrierClaimTransformer.class.getSimpleName(), "transform"); - /** Injecting securityTagManager. */ - @Autowired private SecurityTagManager securityTagManager; + /** The securityTagManager. */ + private final SecurityTagManager securityTagManager; /** * Instantiates a new transformer. diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformer.java index 4b6354b262..e2c6447002 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/DMEClaimTransformer.java @@ -26,7 +26,6 @@ import org.hl7.fhir.dstu3.model.Extension; import org.hl7.fhir.dstu3.model.Quantity; import org.hl7.fhir.dstu3.model.codesystems.ClaimCareteamrole; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms {@link DMEClaim} instances into FHIR {@link ExplanationOfBenefit} resources. */ @@ -43,8 +42,8 @@ final class DMEClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(DMEClaimTransformer.class.getSimpleName(), "transform"); - /** Injecting securityTagManager. */ - @Autowired private SecurityTagManager securityTagManager; + /** The securityTagManager. */ + private final SecurityTagManager securityTagManager; /** * Instantiates a new transformer. diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformer.java index c2c4a47f54..b8dbe48c19 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HHAClaimTransformer.java @@ -26,7 +26,6 @@ import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.dstu3.model.UnsignedIntType; import org.hl7.fhir.dstu3.model.codesystems.BenefitCategory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms CCW {@link HHAClaim} instances into FHIR {@link ExplanationOfBenefit} resources. */ @@ -42,8 +41,8 @@ final class HHAClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(HHAClaimTransformer.class.getSimpleName(), "transform"); - /** Injecting securityTagManager. */ - @Autowired private SecurityTagManager securityTagManager; + /** The securityTagManager. */ + private final SecurityTagManager securityTagManager; /** * Instantiates a new transformer. diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformer.java index 274d20f0ef..eaed315a0d 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/HospiceClaimTransformer.java @@ -22,7 +22,6 @@ import org.hl7.fhir.dstu3.model.Coding; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.ItemComponent; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -40,8 +39,8 @@ final class HospiceClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(HospiceClaimTransformer.class.getSimpleName(), "transform"); - /** Injecting securityTagManager. */ - @Autowired private SecurityTagManager securityTagManager; + /** The securityTagManager. */ + private final SecurityTagManager securityTagManager; /** * Instantiates a new transformer. diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformer.java index 448f13846a..6f8dbfd190 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/InpatientClaimTransformer.java @@ -21,7 +21,6 @@ import org.hl7.fhir.dstu3.model.Coding; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.ItemComponent; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -39,8 +38,8 @@ final class InpatientClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(InpatientClaimTransformer.class.getSimpleName(), "transform"); - /** Injecting securityTagManager. */ - @Autowired private SecurityTagManager securityTagManager; + /** The securityTagManager. */ + private final SecurityTagManager securityTagManager; /** * Instantiates a new transformer. diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformer.java index 903b35763b..aa994e9597 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/OutpatientClaimTransformer.java @@ -23,7 +23,6 @@ import org.hl7.fhir.dstu3.model.Coding; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.ItemComponent; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -43,8 +42,8 @@ final class OutpatientClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(OutpatientClaimTransformer.class.getSimpleName(), "transform"); - /** Injecting securityTagManager. */ - @Autowired private SecurityTagManager securityTagManager; + /** The securityTagManager. */ + private final SecurityTagManager securityTagManager; /** * Instantiates a new transformer. diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformer.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformer.java index 2b26f577fc..bba46f3e04 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformer.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/stu3/providers/SNFClaimTransformer.java @@ -27,7 +27,6 @@ import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.ItemComponent; import org.hl7.fhir.dstu3.model.ExplanationOfBenefit.SupportingInformationComponent; import org.hl7.fhir.dstu3.model.Period; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** Transforms CCW {@link SNFClaim} instances into FHIR {@link ExplanationOfBenefit} resources. */ @@ -44,8 +43,8 @@ public class SNFClaimTransformer implements ClaimTransformerInterface { private static final String METRIC_NAME = MetricRegistry.name(SNFClaimTransformer.class.getSimpleName(), "transform"); - /** Injecting securityTagManager. */ - @Autowired private SecurityTagManager securityTagManager; + /** The securityTagManager. */ + private final SecurityTagManager securityTagManager; /** * Instantiates a new transformer. diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SecurityTagManagerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SecurityTagManagerTest.java index 19e8340f9f..d6bac75bff 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SecurityTagManagerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SecurityTagManagerTest.java @@ -39,7 +39,7 @@ void setUp() { /** testGetClaimSecurityLevel_Inpatient. */ @Test - void testGetClaimSecurityLevel_Inpatient() { + void testGetClaimSecurityLevelInpatient() { CodeableConcept type = new CodeableConcept(); type.addCoding().setCode("INP"); @@ -58,7 +58,7 @@ void testGetClaimSecurityLevel_Inpatient() { /** testGetClaimSecurityLevel_Outpatient. */ @Test - void testGetClaimSecurityLevel_Outpatient() { + void testGetClaimSecurityLevelOutpatient() { CodeableConcept type = new CodeableConcept(); type.addCoding().setCode("OUT"); From 8c1a10a998691fa83933ea2262a58be9a79c25ea Mon Sep 17 00:00:00 2001 From: MahiFentaye <168698136+MahiFentaye@users.noreply.github.com> Date: Thu, 23 Jan 2025 11:54:57 -0500 Subject: [PATCH 12/13] BFD-3665 adding Samhsa test coverage BFD-3665 adding Samhsa test coverage some refactor --- .../war/commons/SecurityTagManager.java | 12 +- .../war/commons/TransformerConstants.java | 8 +- .../war/EndpointJsonComparatorBase.java | 44 +- .../EndpointJsonResponseComparatorV2E2E.java | 24 + .../EndpointJsonResponseComparatorE2E.java | 23 + .../providers/SecurityTagManagerTest.java | 1 - .../v1/eobByPatientIdAllWithSamhsa.json | 1042 +++++++++++++ .../v2/eobReadByPatientWithSamhsa.json | 1371 +++++++++++++++++ .../java/gov/cms/bfd/sharedutils/TagCode.java | 16 +- 9 files changed, 2521 insertions(+), 20 deletions(-) create mode 100644 apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobByPatientIdAllWithSamhsa.json create mode 100644 apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadByPatientWithSamhsa.json diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/SecurityTagManager.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/SecurityTagManager.java index 8082ecf185..4016899bff 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/SecurityTagManager.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/SecurityTagManager.java @@ -66,7 +66,7 @@ public List getClaimSecurityLevel(String claimId, Class tagClass) { if (securityTags.isEmpty()) { Coding coding = new Coding(); coding - .setSystem("http://terminology.hl7.org/CodeSystem/v3-Confidentiality") + .setSystem(TransformerConstants.SAMHSA_CONFIDENTIALITY_CODE_SYSTEM_URL) .setCode("N") .setDisplay("Normal"); securityTagCoding.add(coding); @@ -83,20 +83,14 @@ public List getClaimSecurityLevel(String claimId, Class tagClass) { coding .setSystem(TransformerConstants.SAMHSA_CONFIDENTIALITY_CODE_SYSTEM_URL) .setCode(TagCode.R.toString()) - .setDisplay("Restricted"); + .setDisplay(TagCode.R.getDisplayName()); break; case _42CFRPart2: coding .setSystem(TransformerConstants.SAMHSA_ACT_CODE_SYSTEM_URL) .setCode(TagCode._42CFRPart2.toString()) - .setDisplay("42 CFR Part 2"); + .setDisplay(TagCode._42CFRPart2.getDisplayName()); break; - - default: - coding - .setSystem(TransformerConstants.SAMHSA_CONFIDENTIALITY_CODE_SYSTEM_URL) - .setCode("N") // Default to 'Normal' if unrecognized - .setDisplay("Normal"); } } securityTagCoding.add(coding); diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/TransformerConstants.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/TransformerConstants.java index 0a5d787bb0..7b496df935 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/TransformerConstants.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/TransformerConstants.java @@ -705,15 +705,15 @@ public enum CurrencyIdentifier { "https://www.hhs.gov/sites/default/files/logo-white-lg.png"; /** - * URL for C4DIC Logo C4DIC - * Logo . + * HL7 CodeSystem v3-Confidentiality CodeSystem: . */ public static final String SAMHSA_CONFIDENTIALITY_CODE_SYSTEM_URL = "http://terminology.hl7.org/CodeSystem/v3-Confidentiality"; /** - * URL for C4DIC Logo C4DIC - * Logo . + * HL7 CodeSystem v3-ConfidentialityCodeSystem: . */ public static final String SAMHSA_ACT_CODE_SYSTEM_URL = "http://terminology.hl7.org/CodeSystem/v3-ActCode"; diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/EndpointJsonComparatorBase.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/EndpointJsonComparatorBase.java index 79a998754a..6e511f9e01 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/EndpointJsonComparatorBase.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/EndpointJsonComparatorBase.java @@ -11,6 +11,7 @@ import gov.cms.bfd.model.rif.samples.StaticRifResourceGroup; import io.restassured.http.Header; import io.restassured.http.Headers; +import io.restassured.specification.RequestSpecification; import java.io.IOException; import java.io.UncheckedIOException; import java.nio.file.Path; @@ -78,16 +79,34 @@ protected static String getJsonResponseFor(String requestString) { requestString, new Headers(new Header("Content-Type", "application/json+fhir"))); } + /** + * Gets the json response for the specified endpoint request string and default content type json + * header. + * + * @param requestString the request string + * @param requestSpec the request Spec + * @return the json response for + */ + protected static String getJsonResponseFor( + String requestString, RequestSpecification requestSpec) { + return getJsonResponseFor( + requestString, + new Headers(new Header("Content-Type", "application/json+fhir")), + requestSpec); + } + /** * Gets the json response for the specified endpoint request string and specified headers. * * @param requestString the request string * @param headers the headers for the request + * @param requestSpec the request Specification * @return the json response for */ - protected static String getJsonResponseFor(String requestString, Headers headers) { + protected static String getJsonResponseFor( + String requestString, Headers headers, RequestSpecification requestSpec) { return given() - .spec(requestAuth) + .spec(requestSpec) .headers(headers) .expect() .log() @@ -101,6 +120,17 @@ protected static String getJsonResponseFor(String requestString, Headers headers .asString(); } + /** + * Gets the json response for the specified endpoint request string and specified headers. + * + * @param requestString the request string + * @param headers the headers for the request + * @return the json response for + */ + protected static String getJsonResponseFor(String requestString, Headers headers) { + return getJsonResponseFor(requestString, headers, requestAuth); + } + /** * Gets the expected json response directory. These are generated as a point in time comparison * when we know the responses are in a good state so that the json response tests can regression @@ -207,6 +237,16 @@ protected static Beneficiary getSampleABene() { return ServerTestUtils.get().getFirstBeneficiary(loadedRecords); } + /** + * Gets the first sample A beneficiary. + * + * @return the first sample A beneficiary + */ + protected static Beneficiary getSampleABeneSamhsa() { + List loadedRecords = ServerTestUtils.get().loadSampleASamhsaData(); + return ServerTestUtils.get().getFirstBeneficiary(loadedRecords); + } + /** * Gets the first sample A beneficiary. * diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/EndpointJsonResponseComparatorV2E2E.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/EndpointJsonResponseComparatorV2E2E.java index 96ec7b0860..bfbc32fb7d 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/EndpointJsonResponseComparatorV2E2E.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/r4/providers/EndpointJsonResponseComparatorV2E2E.java @@ -130,6 +130,9 @@ public static Stream data() { arguments( "eobReadInpatient", (Supplier) EndpointJsonResponseComparatorV2E2E::eobReadInpatient), + arguments( + "eobReadByPatientWithSamhsa", + (Supplier) EndpointJsonResponseComparatorV2E2E::eobReadByPatientWithSamhsa), arguments( "eobReadOutpatient", (Supplier) EndpointJsonResponseComparatorV2E2E::eobReadOutpatient), @@ -769,6 +772,27 @@ public static String eobReadInpatient() { return getJsonResponseFor(baseServerUrl + "/v2/fhir/ExplanationOfBenefit/" + eobId); } + /** + * Executes a search against the EOB endpoint using an inpatient claim id (based on the sample a + * data) and returns the sorted results. + * + * @return the sorted results + */ + public static String eobReadByPatientWithSamhsa() { + Beneficiary bene = getSampleABeneSamhsa(); + + String url = + baseServerUrl + + "/v2/fhir/ExplanationOfBenefit/?patient=" + + bene.getBeneficiaryId() + + "&_count=" + + 2 + + "&_page=" + + (6); + + return getJsonResponseFor(url + bene.getBeneficiaryId(), getRequestAuth(SAMHSA_KEYSTORE)); + } + /** * Executes a search against the EOB endpoint using an outpatient claim id (based on the sample a * data) and returns the sorted results. diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/EndpointJsonResponseComparatorE2E.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/EndpointJsonResponseComparatorE2E.java index db692bda5c..59c3512bc7 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/EndpointJsonResponseComparatorE2E.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/EndpointJsonResponseComparatorE2E.java @@ -104,6 +104,9 @@ public static Stream data() { arguments( "eobByPatientIdAll", (Supplier) EndpointJsonResponseComparatorE2E::eobByPatientIdAll), + arguments( + "eobByPatientIdAllWithSamhsa", + (Supplier) EndpointJsonResponseComparatorE2E::eobByPatientIdAllWithSamhsa), arguments( "eobByPatientIdPaged", (Supplier) EndpointJsonResponseComparatorE2E::eobByPatientIdPaged), @@ -575,6 +578,26 @@ public static String eobByPatientIdAll() { return sortDiagnosisTypes(response, "/entry/3/resource/diagnosis/7/type"); } + /** + * Executes a search against the EOB endpoint using the sample A bene id and returns the sorted + * results. + * + * @return the sorted results + */ + public static String eobByPatientIdAllWithSamhsa() { + Beneficiary beneficiary = getSampleABeneSamhsa(); + + String url = + baseServerUrl + + "/v1/fhir/ExplanationOfBenefit/?patient=" + + beneficiary.getBeneficiaryId() + + "&_count=" + + 2 + + "&_page=" + + (6); + return getJsonResponseFor(url, getRequestAuth(SAMHSA_KEYSTORE)); + } + /** * Executes a search against the EOB endpoint using the sample A bene id and returns the sorted * results with paging. diff --git a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SecurityTagManagerTest.java b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SecurityTagManagerTest.java index d6bac75bff..c6c5d7ccda 100644 --- a/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SecurityTagManagerTest.java +++ b/apps/bfd-server/bfd-server-war/src/test/java/gov/cms/bfd/server/war/stu3/providers/SecurityTagManagerTest.java @@ -63,7 +63,6 @@ void testGetClaimSecurityLevelOutpatient() { type.addCoding().setCode("OUT"); Set mockTags = new HashSet<>(); - mockTags.add("NormalTag"); when(entityManager.createQuery(anyString())).thenReturn(query); when(query.getResultList()).thenReturn(new java.util.ArrayList<>(mockTags)); diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobByPatientIdAllWithSamhsa.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobByPatientIdAllWithSamhsa.json new file mode 100644 index 0000000000..fb233701f7 --- /dev/null +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v1/eobByPatientIdAllWithSamhsa.json @@ -0,0 +1,1042 @@ +{ + "resourceType" : "Bundle", + "id" : "IGNORED_FIELD", + "meta" : { + "lastUpdated" : "IGNORED_FIELD" + }, + "type" : "searchset", + "total" : 4462, + "link" : [ { + "relation" : "first", + "url" : "https://localhost:IGNORED_FIELD/v1/fhir/ExplanationOfBenefit?_page=6&startIndex=0&_count=2&patient=567834" + }, { + "relation" : "next", + "url" : "https://localhost:IGNORED_FIELD/v1/fhir/ExplanationOfBenefit?_page=6&startIndex=2&_count=2&patient=567834" + }, { + "relation" : "last", + "url" : "https://localhost:IGNORED_FIELD/v1/fhir/ExplanationOfBenefit?_page=6&startIndex=4460&_count=2&patient=567834" + }, { + "relation" : "self", + "url" : "https://localhost:IGNORED_FIELD/v1/fhir/ExplanationOfBenefit/?_count=2&_page=6&patient=567834" + } ], + "entry" : [ { + "resource" : { + "resourceType" : "ExplanationOfBenefit", + "id" : "pde-89", + "meta" : { + "lastUpdated" : "IGNORED_FIELD" + }, + "identifier" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/pde_id", + "value" : "89" + }, { + "system" : "https://bluebutton.cms.gov/resources/identifier/claim-group", + "value" : "900" + }, { + "system" : "https://bluebutton.cms.gov/resources/variables/rx_srvc_rfrnc_num", + "value" : "799999" + } ], + "status" : "active", + "type" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/eob-type", + "code" : "PDE" + }, { + "system" : "http://hl7.org/fhir/ex-claimtype", + "code" : "pharmacy", + "display" : "Pharmacy" + } ] + }, + "patient" : { + "reference" : "Patient/567834" + }, + "billablePeriod" : { + "start" : "2015-05-12", + "end" : "2015-05-12" + }, + "organization" : { + "identifier" : { + "type" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/sid/us-npi", + "code" : "NPI", + "display" : "National Provider Identifier" + } ] + }, + "system" : "http://hl7.org/fhir/sid/us-npi", + "value" : "1023011079" + }, + "display" : "ADVANTAGE HOME HEALTH CARE, INC." + }, + "facility" : { + "extension" : [ { + "url" : "https://bluebutton.cms.gov/resources/variables/phrmcy_srvc_type_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/phrmcy_srvc_type_cd", + "code" : "01", + "display" : "Community/retail pharmacy" + } + } ], + "identifier" : { + "type" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/sid/us-npi", + "code" : "NPI", + "display" : "National Provider Identifier" + } ] + }, + "system" : "http://hl7.org/fhir/sid/us-npi", + "value" : "1023011079" + }, + "display" : "ADVANTAGE HOME HEALTH CARE, INC." + }, + "information" : [ { + "sequence" : 1, + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/daw_prod_slctn_cd", + "display" : "Dispense as Written (DAW) Product Selection Code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/daw_prod_slctn_cd", + "code" : "0", + "display" : "No Product Selection Indicated (may also have missing values)" + } ] + } + }, { + "sequence" : 2, + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/dspnsng_stus_cd", + "display" : "Dispensing Status Code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/dspnsng_stus_cd", + "code" : "P", + "display" : "Partial fill" + } ] + } + }, { + "sequence" : 3, + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/drug_cvrg_stus_cd", + "display" : "Drug Coverage Status Code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/drug_cvrg_stus_cd", + "code" : "C", + "display" : "Covered" + } ] + } + }, { + "sequence" : 4, + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/adjstmt_dltn_cd", + "display" : "Adjustment Deletion Code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/adjstmt_dltn_cd", + "code" : "A", + "display" : "Adjustment" + } ] + } + }, { + "sequence" : 5, + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/nstd_frmt_cd", + "display" : "Non-Standard Format Code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/nstd_frmt_cd", + "code" : "X", + "display" : "X12 837" + } ] + } + }, { + "sequence" : 6, + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/prcng_excptn_cd", + "display" : "Pricing Exception Code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/prcng_excptn_cd", + "code" : "M", + "display" : "Medicare is a secondary payer (MSP)" + } ] + } + }, { + "sequence" : 7, + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/ctstrphc_cvrg_cd", + "display" : "Catastrophic Coverage Code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/ctstrphc_cvrg_cd", + "code" : "C", + "display" : "Above attachment point" + } ] + } + }, { + "sequence" : 8, + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/rx_orgn_cd", + "display" : "Prescription Origination Code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/rx_orgn_cd", + "code" : "3", + "display" : "Electronic" + } ] + } + }, { + "sequence" : 9, + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/brnd_gnrc_cd", + "display" : "Brand-Generic Code Reported by Submitting Plan" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/brnd_gnrc_cd", + "code" : "G", + "display" : "Generic Null/missing" + } ] + } + }, { + "sequence" : 10, + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/phrmcy_srvc_type_cd", + "display" : "Pharmacy service type code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/phrmcy_srvc_type_cd", + "code" : "01", + "display" : "Community/retail pharmacy" + } ] + } + }, { + "sequence" : 11, + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/ptnt_rsdnc_cd", + "display" : "Patient Residence Code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/ptnt_rsdnc_cd", + "code" : "02", + "display" : "Skilled Nursing Facility" + } ] + } + }, { + "sequence" : 12, + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/submsn_clr_cd", + "display" : "Submission clarification code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/submsn_clr_cd", + "code" : "08", + "display" : "Process compound for approved ingredients" + } ] + } + } ], + "careTeam" : [ { + "sequence" : 2, + "provider" : { + "identifier" : { + "system" : "http://hl7.org/fhir/sid/us-npi", + "value" : "1750384806" + }, + "display" : "DR. ROBERT BISBEE MD" + }, + "role" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/claimcareteamrole", + "code" : "primary", + "display" : "Primary provider" + } ] + } + } ], + "insurance" : { + "coverage" : { + "extension" : [ { + "url" : "https://bluebutton.cms.gov/resources/variables/plan_cntrct_rec_id", + "valueIdentifier" : { + "system" : "https://bluebutton.cms.gov/resources/variables/plan_cntrct_rec_id", + "value" : "H9999" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/plan_pbp_rec_num", + "valueIdentifier" : { + "system" : "https://bluebutton.cms.gov/resources/variables/plan_pbp_rec_num", + "value" : "020" + } + } ], + "reference" : "Coverage/part-d-567834" + } + }, + "item" : [ { + "sequence" : 1, + "careTeamLinkId" : [ 2 ], + "service" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/sid/ndc", + "code" : "000000000", + "display" : "Fake Diluent - WATER" + } ] + }, + "servicedDate" : "2015-05-12", + "quantity" : { + "extension" : [ { + "url" : "https://bluebutton.cms.gov/resources/variables/fill_num", + "valueQuantity" : { + "value" : 3 + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/days_suply_num", + "valueQuantity" : { + "value" : 30 + } + } ], + "value" : 60.0 + }, + "adjudication" : [ { + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/cvrd_d_plan_pd_amt", + "display" : "Amount paid by Part D plan for the PDE (drug is covered by Part D)" + } ] + }, + "reason" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/drug_cvrg_stus_cd", + "code" : "C", + "display" : "Covered" + } ] + }, + "amount" : { + "value" : 126.99, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/gdc_blw_oopt_amt", + "display" : "Gross Drug Cost Below Part D Out-of-Pocket Threshold (GDCB)" + } ] + }, + "amount" : { + "value" : 995.34, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/gdc_abv_oopt_amt", + "display" : "Gross Drug Cost Above Part D Out-of-Pocket Threshold (GDCA)" + } ] + }, + "amount" : { + "value" : 15.25, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/ptnt_pay_amt", + "display" : "Amount Paid by Patient" + } ] + }, + "amount" : { + "value" : 235.85, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/othr_troop_amt", + "display" : "Other True Out-of-Pocket (TrOOP) Amount" + } ] + }, + "amount" : { + "value" : 17.3, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/lics_amt", + "display" : "Amount paid for the PDE by Part D low income subsidy" + } ] + }, + "amount" : { + "value" : 122.23, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/plro_amt", + "display" : "Reduction in patient liability due to payments by other payers (PLRO)" + } ] + }, + "amount" : { + "value" : 42.42, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/tot_rx_cst_amt", + "display" : "Total drug cost (Part D)" + } ] + }, + "amount" : { + "value" : 550.0, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/rptd_gap_dscnt_num", + "display" : "Gap Discount Amount" + } ] + }, + "amount" : { + "value" : 317.22, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + } ], + "detail" : [ { + "type" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/v3/ActCode", + "code" : "RXDINV", + "display" : "Rx dispense invoice" + } ] + } + } ] + } ], + "payment" : { + "date" : "2015-05-27" + } + } + }, { + "resource" : { + "resourceType" : "ExplanationOfBenefit", + "id" : "carrier-9991831000", + "meta" : { + "lastUpdated" : "IGNORED_FIELD", + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "42CFRPart2", + "display" : "42 CFR Part 2" + }, { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "R", + "display" : "Restricted" + } ] + }, + "contained" : [ { + "resourceType" : "ReferralRequest", + "id" : "IGNORED_FIELD", + "status" : "completed", + "subject" : { + "reference" : "Patient/567834" + }, + "requester" : { + "agent" : { + "identifier" : { + "system" : "http://hl7.org/fhir/sid/us-npi", + "value" : "8765676" + } + } + }, + "recipient" : [ { + "identifier" : { + "system" : "http://hl7.org/fhir/sid/us-npi", + "value" : "8765676" + } + } ] + }, { + "resourceType" : "Observation", + "id" : "IGNORED_FIELD", + "status" : "unknown", + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/line_hct_hgb_type_cd", + "code" : "R1", + "display" : "Hemoglobin Test" + } ] + }, + "valueQuantity" : { + "value" : 42.0 + } + } ], + "extension" : [ { + "url" : "https://bluebutton.cms.gov/resources/variables/prpayamt", + "valueMoney" : { + "value" : 0.0, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/carr_num", + "valueIdentifier" : { + "system" : "https://bluebutton.cms.gov/resources/variables/carr_num", + "value" : "61026" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/carr_clm_cntl_num", + "valueIdentifier" : { + "system" : "https://bluebutton.cms.gov/resources/variables/carr_clm_cntl_num", + "value" : "74655592568216" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/carr_clm_pmt_dnl_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/carr_clm_pmt_dnl_cd", + "code" : "1", + "display" : "Physician/supplier" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/asgmntcd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/asgmntcd", + "code" : "A", + "display" : "Assigned claim" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/clm_clncl_tril_num", + "valueIdentifier" : { + "system" : "https://bluebutton.cms.gov/resources/variables/clm_clncl_tril_num", + "value" : "0" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/carr_clm_cash_ddctbl_apld_amt", + "valueMoney" : { + "value" : 777.0, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/nch_clm_prvdr_pmt_amt", + "valueMoney" : { + "value" : 123.45, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/nch_clm_bene_pmt_amt", + "valueMoney" : { + "value" : 888.0, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/nch_carr_clm_sbmtd_chrg_amt", + "valueMoney" : { + "value" : 245.04, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/nch_carr_clm_alowd_amt", + "valueMoney" : { + "value" : 166.23, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + } ], + "identifier" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/clm_id", + "value" : "9991831000" + }, { + "system" : "https://bluebutton.cms.gov/resources/identifier/claim-group", + "value" : "900" + } ], + "status" : "active", + "type" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/nch_clm_type_cd", + "code" : "71", + "display" : "Local carrier non-durable medical equipment, prosthetics, orthotics, and supplies (DMEPOS) claim" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/eob-type", + "code" : "CARRIER" + }, { + "system" : "http://hl7.org/fhir/ex-claimtype", + "code" : "professional", + "display" : "Professional" + }, { + "system" : "https://bluebutton.cms.gov/resources/variables/nch_near_line_rec_ident_cd", + "code" : "O", + "display" : "Part B physician/supplier claim record (processed by local carriers; can include DMEPOS services)" + } ] + }, + "patient" : { + "reference" : "Patient/567834" + }, + "billablePeriod" : { + "start" : "1999-10-27", + "end" : "1999-10-27" + }, + "referral" : { + "reference" : "IGNORED_FIELD" + }, + "disposition" : "1", + "information" : [ { + "sequence" : 1, + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/nch_wkly_proc_dt", + "display" : "NCH Weekly Claim Processing Date" + } ] + }, + "timingDate" : "1999-11-06" + } ], + "careTeam" : [ { + "extension" : [ { + "url" : "https://bluebutton.cms.gov/resources/variables/carr_line_prvdr_type_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/carr_line_prvdr_type_cd", + "code" : "0" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/prtcptng_ind_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/prtcptng_ind_cd", + "code" : "1", + "display" : "Participating" + } + }, { + "url" : "http://hl7.org/fhir/sid/us-npi", + "valueCoding" : { + "system" : "http://hl7.org/fhir/sid/us-npi", + "code" : "0000000000", + "display" : "Fake ORG Name" + } + } ], + "sequence" : 2, + "provider" : { + "identifier" : { + "system" : "http://hl7.org/fhir/sid/us-npi", + "value" : "1923124" + } + }, + "responsible" : true, + "role" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/claimcareteamrole", + "code" : "primary", + "display" : "Primary provider" + } ] + }, + "qualification" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/prvdr_spclty", + "code" : "41", + "display" : "Optometrist" + } ] + } + } ], + "diagnosis" : [ { + "sequence" : 1, + "diagnosisCodeableConcept" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/sid/icd-9-cm", + "code" : "291" + } ] + }, + "type" : [ { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/diagnosis-type", + "code" : "principal", + "display" : "The single medical diagnosis that is most relevant to the patient's chief complaint or need for treatment." + } ] + } ] + }, { + "sequence" : 2, + "diagnosisCodeableConcept" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/sid/icd-10", + "code" : "A02", + "display" : "OTHER SALMONELLA INFECTIONS" + } ] + }, + "type" : [ { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/diagnosis-type", + "code" : "principal", + "display" : "The single medical diagnosis that is most relevant to the patient's chief complaint or need for treatment." + } ] + } ] + }, { + "sequence" : 3, + "diagnosisCodeableConcept" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/sid/icd-9-cm", + "code" : "A05", + "display" : "\"OTH BACTERIAL FOODBORNE INTOXICATIONS, NEC\"" + } ] + } + }, { + "sequence" : 4, + "diagnosisCodeableConcept" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/sid/icd-10", + "code" : "B04", + "display" : "MONKEYPOX" + } ] + } + }, { + "sequence" : 5, + "diagnosisCodeableConcept" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/sid/icd-10", + "code" : "B05", + "display" : "MEASLES" + } ] + } + }, { + "sequence" : 6, + "diagnosisCodeableConcept" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/sid/icd-10", + "code" : "A52", + "display" : "LATE SYPHILIS" + } ] + } + } ], + "insurance" : { + "coverage" : { + "reference" : "Coverage/part-b-567834" + } + }, + "item" : [ { + "extension" : [ { + "url" : "https://bluebutton.cms.gov/resources/variables/carr_line_mtus_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/carr_line_mtus_cd", + "code" : "3", + "display" : "Services" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/carr_line_mtus_cnt", + "valueQuantity" : { + "value" : 1 + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/betos_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/betos_cd", + "code" : "T2D", + "display" : "Other tests - other" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/line_bene_prmry_pyr_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/line_bene_prmry_pyr_cd", + "code" : "E", + "display" : "Workers' compensation" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/line_service_deductible", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/line_service_deductible", + "code" : "0", + "display" : "Service Subject to Deductible" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/line_hct_hgb_rslt_num", + "valueReference" : { + "reference" : "IGNORED_FIELD" + } + }, { + "url" : "http://hl7.org/fhir/sid/ndc", + "valueCoding" : { + "system" : "http://hl7.org/fhir/sid/ndc", + "code" : "000000000", + "display" : "Fake Diluent - WATER" + } + } ], + "sequence" : 6, + "careTeamLinkId" : [ 2 ], + "diagnosisLinkId" : [ 6 ], + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/line_cms_type_srvc_cd", + "code" : "1", + "display" : "Medical care" + } ] + }, + "service" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/hcpcs", + "version" : "5", + "code" : "92999" + } ] + }, + "modifier" : [ { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/hcpcs", + "version" : "5", + "code" : "LT" + } ] + } ], + "servicedPeriod" : { + "start" : "1999-10-27", + "end" : "1999-10-27" + }, + "locationCodeableConcept" : { + "extension" : [ { + "url" : "https://bluebutton.cms.gov/resources/variables/prvdr_state_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/prvdr_state_cd", + "code" : "IL" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/prvdr_zip", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/prvdr_zip", + "code" : "555558202" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/carr_line_prcng_lclty_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/carr_line_prcng_lclty_cd", + "code" : "15", + "display" : "CONNECTICUT" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/carr_line_clia_lab_num", + "valueIdentifier" : { + "system" : "https://bluebutton.cms.gov/resources/variables/carr_line_clia_lab_num", + "value" : "BB889999AA" + } + } ], + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/line_place_of_srvc_cd", + "code" : "11", + "display" : "Office. Location, other than a hospital, skilled nursing facility (SNF), military treatment facility, community health center, State or local public health clinic, or intermediate care facility (ICF), where the health professional routinely provides health examinations, diagnosis, and treatment of illness or injury on an ambulatory basis." + } ] + }, + "quantity" : { + "value" : 1.0 + }, + "adjudication" : [ { + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/carr_line_rdcd_pmt_phys_astn_c", + "display" : "Carrier Line Reduced Payment Physician Assistant Code" + } ] + }, + "reason" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/carr_line_rdcd_pmt_phys_astn_c", + "code" : "0", + "display" : "N/A" + } ] + } + }, { + "extension" : [ { + "url" : "https://bluebutton.cms.gov/resources/variables/line_pmt_80_100_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/line_pmt_80_100_cd", + "code" : "0", + "display" : "80%" + } + } ], + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/line_nch_pmt_amt", + "display" : "Line NCH Medicare Payment Amount" + } ] + }, + "amount" : { + "value" : 37.5, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/line_bene_pmt_amt", + "display" : "Line Payment Amount to Beneficiary" + } ] + }, + "amount" : { + "value" : 0.0, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/line_prvdr_pmt_amt", + "display" : "Line Provider Payment Amount" + } ] + }, + "amount" : { + "value" : 37.5, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/line_bene_ptb_ddctbl_amt", + "display" : "Line Beneficiary Part B Deductible Amount" + } ] + }, + "amount" : { + "value" : 0.0, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/line_bene_prmry_pyr_pd_amt", + "display" : "Line Primary Payer (if not Medicare) Paid Amount" + } ] + }, + "amount" : { + "value" : 0.0, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/line_coinsrnc_amt", + "display" : "Line Beneficiary Coinsurance Amount" + } ] + }, + "amount" : { + "value" : 9.57, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/line_sbmtd_chrg_amt", + "display" : "Line Submitted Charge Amount" + } ] + }, + "amount" : { + "value" : 75.0, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/line_alowd_chrg_amt", + "display" : "Line Allowed Charge Amount" + } ] + }, + "amount" : { + "value" : 47.84, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/line_prcsg_ind_cd", + "display" : "Line Processing Indicator Code" + } ] + }, + "reason" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/line_prcsg_ind_cd", + "code" : "A", + "display" : "Allowed" + } ] + } + } ] + } ], + "payment" : { + "amount" : { + "value" : 199.99, + "system" : "urn:iso:std:iso:4217", + "code" : "USD" + } + } + } + } ] +} \ No newline at end of file diff --git a/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadByPatientWithSamhsa.json b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadByPatientWithSamhsa.json new file mode 100644 index 0000000000..7b8efef150 --- /dev/null +++ b/apps/bfd-server/bfd-server-war/src/test/resources/endpoint-responses/v2/eobReadByPatientWithSamhsa.json @@ -0,0 +1,1371 @@ +{ + "resourceType" : "Bundle", + "id" : "IGNORED_FIELD", + "meta" : { + "lastUpdated" : "IGNORED_FIELD" + }, + "type" : "searchset", + "total" : 4462, + "link" : [ { + "relation" : "first", + "url" : "https://localhost:IGNORED_FIELD/v2/fhir/ExplanationOfBenefit?_page=6567834&startIndex=0&_count=2&patient=567834" + }, { + "relation" : "next", + "url" : "https://localhost:IGNORED_FIELD/v2/fhir/ExplanationOfBenefit?_page=6567834&startIndex=2&_count=2&patient=567834" + }, { + "relation" : "last", + "url" : "https://localhost:IGNORED_FIELD/v2/fhir/ExplanationOfBenefit?_page=6567834&startIndex=4460&_count=2&patient=567834" + }, { + "relation" : "self", + "url" : "https://localhost:IGNORED_FIELD/v2/fhir/ExplanationOfBenefit/?_count=2&_page=6567834&patient=567834" + } ], + "entry" : [ { + "resource" : { + "resourceType" : "ExplanationOfBenefit", + "id" : "pde-89", + "meta" : { + "lastUpdated" : "IGNORED_FIELD", + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Pharmacy" ] + }, + "identifier" : [ { + "type" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBIdentifierType", + "code" : "uc", + "display" : "Unique Claim ID" + } ] + }, + "system" : "https://bluebutton.cms.gov/resources/variables/pde_id", + "value" : "89" + }, { + "type" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBIdentifierType", + "code" : "uc", + "display" : "Unique Claim ID" + } ] + }, + "system" : "https://bluebutton.cms.gov/resources/identifier/claim-group", + "value" : "900" + }, { + "type" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBIdentifierType", + "code" : "uc", + "display" : "Unique Claim ID" + } ] + }, + "system" : "https://bluebutton.cms.gov/resources/variables/rx_srvc_rfrnc_num", + "value" : "799999" + } ], + "status" : "active", + "type" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/eob-type", + "code" : "PDE" + }, { + "system" : "http://terminology.hl7.org/CodeSystem/claim-type", + "code" : "pharmacy", + "display" : "Pharmacy" + } ] + }, + "use" : "claim", + "patient" : { + "reference" : "Patient/567834" + }, + "billablePeriod" : { + "start" : "2015-05-12", + "end" : "2015-05-12" + }, + "created" : "IGNORED_FIELD", + "insurer" : { + "identifier" : { + "value" : "CMS" + } + }, + "provider" : { + "identifier" : { + "system" : "https://bluebutton.cms.gov/resources/variables/prvdr_num", + "value" : "1023011079" + } + }, + "facility" : { + "extension" : [ { + "url" : "https://bluebutton.cms.gov/resources/variables/phrmcy_srvc_type_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/phrmcy_srvc_type_cd", + "code" : "01", + "display" : "Community/retail pharmacy" + } + } ], + "identifier" : { + "type" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBIdentifierType", + "code" : "npi" + } ] + }, + "value" : "1023011079" + }, + "display" : "ADVANTAGE HOME HEALTH CARE, INC." + }, + "outcome" : "complete", + "careTeam" : [ { + "sequence" : 1, + "provider" : { + "identifier" : { + "type" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBIdentifierType", + "code" : "npi", + "display" : "National Provider Identifier" + } ] + }, + "value" : "1750384806" + }, + "display" : "DR. ROBERT BISBEE MD" + }, + "role" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBClaimCareTeamRole", + "code" : "prescribing", + "display" : "Prescribing provider" + } ] + } + } ], + "supportingInfo" : [ { + "sequence" : 1, + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBSupportingInfoType", + "code" : "compoundcode", + "display" : "Compound Code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code" : "RXDINV", + "display" : "Rx dispense invoice" + } ] + } + }, { + "sequence" : 2, + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBSupportingInfoType", + "code" : "refillnum", + "display" : "Refill Number" + } ] + }, + "valueQuantity" : { + "value" : 3 + } + }, { + "sequence" : 3, + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBSupportingInfoType", + "code" : "dayssupply", + "display" : "Days Supply" + } ] + }, + "valueQuantity" : { + "value" : 30 + } + }, { + "sequence" : 4, + "category" : { + "coding" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/claiminformationcategory", + "code" : "info", + "display" : "Information" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/drug_cvrg_stus_cd", + "display" : "Drug Coverage Status Code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/drug_cvrg_stus_cd", + "code" : "C", + "display" : "Covered" + } ] + } + }, { + "sequence" : 5, + "category" : { + "coding" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/claiminformationcategory", + "code" : "info", + "display" : "Information" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/daw_prod_slctn_cd", + "display" : "Dispense as Written (DAW) Product Selection Code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/daw_prod_slctn_cd", + "code" : "0", + "display" : "No Product Selection Indicated (may also have missing values)" + } ] + } + }, { + "sequence" : 6, + "category" : { + "coding" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/claiminformationcategory", + "code" : "info", + "display" : "Information" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/dspnsng_stus_cd", + "display" : "Dispensing Status Code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/dspnsng_stus_cd", + "code" : "P", + "display" : "Partial fill" + } ] + } + }, { + "sequence" : 7, + "category" : { + "coding" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/claiminformationcategory", + "code" : "info", + "display" : "Information" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/adjstmt_dltn_cd", + "display" : "Adjustment Deletion Code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/adjstmt_dltn_cd", + "code" : "A", + "display" : "Adjustment" + } ] + } + }, { + "sequence" : 8, + "category" : { + "coding" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/claiminformationcategory", + "code" : "info", + "display" : "Information" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/nstd_frmt_cd", + "display" : "Non-Standard Format Code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/nstd_frmt_cd", + "code" : "X", + "display" : "X12 837" + } ] + } + }, { + "sequence" : 9, + "category" : { + "coding" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/claiminformationcategory", + "code" : "info", + "display" : "Information" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/prcng_excptn_cd", + "display" : "Pricing Exception Code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/prcng_excptn_cd", + "code" : "M", + "display" : "Medicare is a secondary payer (MSP)" + } ] + } + }, { + "sequence" : 10, + "category" : { + "coding" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/claiminformationcategory", + "code" : "info", + "display" : "Information" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/ctstrphc_cvrg_cd", + "display" : "Catastrophic Coverage Code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/ctstrphc_cvrg_cd", + "code" : "C", + "display" : "Above attachment point" + } ] + } + }, { + "sequence" : 11, + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBSupportingInfoType", + "code" : "rxorigincode", + "display" : "Rx Origin Code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/rx_orgn_cd", + "code" : "3", + "display" : "Electronic" + } ] + } + }, { + "sequence" : 12, + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBSupportingInfoType", + "code" : "brandgenericcode", + "display" : "Brand Generic Code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/brnd_gnrc_cd", + "code" : "G", + "display" : "Generic Null/missing" + } ] + } + }, { + "sequence" : 13, + "category" : { + "coding" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/claiminformationcategory", + "code" : "info", + "display" : "Information" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/ptnt_rsdnc_cd", + "display" : "Patient Residence Code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/ptnt_rsdnc_cd", + "code" : "02", + "display" : "Skilled Nursing Facility" + } ] + } + }, { + "sequence" : 14, + "category" : { + "coding" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/claiminformationcategory", + "code" : "info", + "display" : "Information" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/submsn_clr_cd", + "display" : "Submission clarification code" + } ] + }, + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/submsn_clr_cd", + "code" : "08", + "display" : "Process compound for approved ingredients" + } ] + } + } ], + "insurance" : [ { + "focal" : true, + "coverage" : { + "extension" : [ { + "url" : "https://bluebutton.cms.gov/resources/variables/plan_cntrct_rec_id", + "valueIdentifier" : { + "system" : "https://bluebutton.cms.gov/resources/variables/plan_cntrct_rec_id", + "value" : "H9999" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/plan_pbp_rec_num", + "valueIdentifier" : { + "system" : "https://bluebutton.cms.gov/resources/variables/plan_pbp_rec_num", + "value" : "020" + } + } ], + "reference" : "Coverage/part-d-567834" + } + } ], + "item" : [ { + "sequence" : 1, + "careTeamSequence" : [ 1 ], + "productOrService" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/sid/ndc", + "code" : "000000000", + "display" : "Fake Diluent - WATER" + } ] + }, + "servicedDate" : "2015-05-12", + "quantity" : { + "value" : 60.0 + }, + "adjudication" : [ { + "category" : { + "coding" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/adjudication", + "code" : "benefit", + "display" : "Benefit Amount" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/cvrd_d_plan_pd_amt", + "display" : "Amount paid by Part D plan for the PDE (drug is covered by Part D)" + } ] + }, + "amount" : { + "value" : 126.99, + "currency" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBAdjudication", + "code" : "coinsurance", + "display" : "Co-insurance" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/gdc_blw_oopt_amt", + "display" : "Gross Drug Cost Below Part D Out-of-Pocket Threshold (GDCB)" + } ] + }, + "amount" : { + "value" : 995.34, + "currency" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBAdjudication", + "code" : "coinsurance", + "display" : "Co-insurance" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/gdc_abv_oopt_amt", + "display" : "Gross Drug Cost Above Part D Out-of-Pocket Threshold (GDCA)" + } ] + }, + "amount" : { + "value" : 15.25, + "currency" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBAdjudication", + "code" : "paidbypatient", + "display" : "Paid by patient" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/ptnt_pay_amt", + "display" : "Amount Paid by Patient" + } ] + }, + "amount" : { + "value" : 235.85, + "currency" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBAdjudication", + "code" : "priorpayerpaid", + "display" : "Prior payer paid" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/othr_troop_amt", + "display" : "Other True Out-of-Pocket (TrOOP) Amount" + } ] + }, + "amount" : { + "value" : 17.3, + "currency" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBAdjudication", + "code" : "discount", + "display" : "Discount" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/lics_amt", + "display" : "Amount paid for the PDE by Part D low income subsidy" + } ] + }, + "amount" : { + "value" : 122.23, + "currency" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBAdjudication", + "code" : "priorpayerpaid", + "display" : "Prior payer paid" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/plro_amt", + "display" : "Reduction in patient liability due to payments by other payers (PLRO)" + } ] + }, + "amount" : { + "value" : 42.42, + "currency" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBAdjudication", + "code" : "drugcost", + "display" : "Drug Cost" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/tot_rx_cst_amt", + "display" : "Total drug cost (Part D)" + } ] + }, + "amount" : { + "value" : 550.0, + "currency" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBAdjudication", + "code" : "discount", + "display" : "Discount" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/rptd_gap_dscnt_num", + "display" : "Gap Discount Amount" + } ] + }, + "amount" : { + "value" : 317.22, + "currency" : "USD" + } + } ] + } ], + "total" : [ { + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBAdjudication", + "code" : "drugcost", + "display" : "Drug Cost" + } ] + }, + "amount" : { + "value" : 550.0, + "currency" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBPayerAdjudicationStatus", + "code" : "other", + "display" : "Other" + } ] + }, + "amount" : { + "value" : 0, + "currency" : "USD" + } + } ], + "payment" : { + "date" : "2015-05-27" + } + } + }, { + "resource" : { + "resourceType" : "ExplanationOfBenefit", + "id" : "carrier-9991831000", + "meta" : { + "lastUpdated" : "IGNORED_FIELD", + "profile" : [ "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Professional-NonClinician" ], + "security" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code" : "42CFRPart2", + "display" : "42 CFR Part 2" + }, { + "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code" : "R", + "display" : "Restricted" + } ] + }, + "contained" : [ { + "resourceType" : "Observation", + "id" : "line-observation-6", + "status" : "unknown", + "code" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/line_hct_hgb_type_cd", + "code" : "R1", + "display" : "Hemoglobin Test" + } ] + }, + "valueQuantity" : { + "value" : 42.0 + } + } ], + "extension" : [ { + "url" : "https://bluebutton.cms.gov/resources/variables/nch_near_line_rec_ident_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/nch_near_line_rec_ident_cd", + "code" : "O", + "display" : "Part B physician/supplier claim record (processed by local carriers; can include DMEPOS services)" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/carr_num", + "valueIdentifier" : { + "system" : "https://bluebutton.cms.gov/resources/variables/carr_num", + "value" : "61026" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/carr_clm_cntl_num", + "valueIdentifier" : { + "system" : "https://bluebutton.cms.gov/resources/variables/carr_clm_cntl_num", + "value" : "74655592568216" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/carr_clm_pmt_dnl_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/carr_clm_pmt_dnl_cd", + "code" : "1", + "display" : "Physician/supplier" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/asgmntcd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/asgmntcd", + "code" : "A", + "display" : "Assigned claim" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/clm_clncl_tril_num", + "valueIdentifier" : { + "system" : "https://bluebutton.cms.gov/resources/variables/clm_clncl_tril_num", + "value" : "0" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/carr_clm_entry_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/carr_clm_entry_cd", + "code" : "1", + "display" : "Original debit; void of original debit (If CLM_DISP_CD = 3, code 1 means voided original debit)" + } + } ], + "identifier" : [ { + "type" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBIdentifierType", + "code" : "uc", + "display" : "Unique Claim ID" + } ] + }, + "system" : "https://bluebutton.cms.gov/resources/variables/clm_id", + "value" : "9991831000" + }, { + "type" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBIdentifierType", + "code" : "uc", + "display" : "Unique Claim ID" + } ] + }, + "system" : "https://bluebutton.cms.gov/resources/identifier/claim-group", + "value" : "900" + } ], + "status" : "active", + "type" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/nch_clm_type_cd", + "code" : "71", + "display" : "Local carrier non-durable medical equipment, prosthetics, orthotics, and supplies (DMEPOS) claim" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/eob-type", + "code" : "CARRIER" + }, { + "system" : "http://terminology.hl7.org/CodeSystem/claim-type", + "code" : "professional", + "display" : "Professional" + } ] + }, + "use" : "claim", + "patient" : { + "reference" : "Patient/567834" + }, + "billablePeriod" : { + "start" : "1999-10-27", + "end" : "1999-10-27" + }, + "created" : "IGNORED_FIELD", + "insurer" : { + "identifier" : { + "value" : "CMS" + } + }, + "provider" : { + "identifier" : { + "system" : "https://bluebutton.cms.gov/resources/variables/carr_clm_blg_npi_num", + "value" : "1234567890" + } + }, + "referral" : { + "identifier" : { + "type" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBIdentifierType", + "code" : "npi", + "display" : "National Provider Identifier" + } ] + }, + "value" : "8765676" + } + }, + "outcome" : "complete", + "disposition" : "1", + "careTeam" : [ { + "sequence" : 1, + "provider" : { + "identifier" : { + "type" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBIdentifierType", + "code" : "npi", + "display" : "National Provider Identifier" + } ] + }, + "value" : "8765676" + } + }, + "role" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBClaimCareTeamRole", + "code" : "referring", + "display" : "Referring" + } ] + } + }, { + "sequence" : 2, + "provider" : { + "identifier" : { + "type" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBIdentifierType", + "code" : "npi", + "display" : "National Provider Identifier" + } ] + }, + "value" : "K25852" + } + }, + "role" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBClaimCareTeamRole", + "code" : "referring", + "display" : "Referring" + } ] + } + }, { + "extension" : [ { + "url" : "https://bluebutton.cms.gov/resources/variables/carr_line_prvdr_type_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/carr_line_prvdr_type_cd", + "code" : "0" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/prtcptng_ind_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/prtcptng_ind_cd", + "code" : "1", + "display" : "Participating" + } + } ], + "sequence" : 3, + "provider" : { + "identifier" : { + "type" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBIdentifierType", + "code" : "npi", + "display" : "National Provider Identifier" + } ] + }, + "value" : "1923124" + } + }, + "responsible" : true, + "role" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBClaimCareTeamRole", + "code" : "performing", + "display" : "Performing provider" + } ] + }, + "qualification" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/prvdr_spclty", + "code" : "41", + "display" : "Optometrist" + } ] + } + }, { + "sequence" : 4, + "provider" : { + "identifier" : { + "type" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBIdentifierType", + "code" : "npi", + "display" : "National Provider Identifier" + } ] + }, + "value" : "0000000000" + }, + "display" : "Fake ORG Name" + }, + "role" : { + "coding" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/claimcareteamrole", + "code" : "primary", + "display" : "Primary provider" + } ] + } + } ], + "supportingInfo" : [ { + "sequence" : 1, + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBSupportingInfoType", + "code" : "clmrecvddate", + "display" : "Claim Received Date" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/nch_wkly_proc_dt", + "display" : "NCH Weekly Claim Processing Date" + } ] + }, + "timingDate" : "1999-11-06" + }, { + "sequence" : 2, + "category" : { + "coding" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/claiminformationcategory", + "code" : "info", + "display" : "Information" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/information", + "code" : "https://bluebutton.cms.gov/resources/variables/line_hct_hgb_rslt_num", + "display" : "Hematocrit / Hemoglobin Test Results" + } ] + }, + "valueReference" : { + "reference" : "#line-observation-6" + } + } ], + "diagnosis" : [ { + "sequence" : 1, + "diagnosisCodeableConcept" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/sid/icd-9-cm", + "code" : "291" + } ] + }, + "type" : [ { + "coding" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/ex-diagnosistype", + "code" : "principal", + "display" : "principal" + } ] + } ] + }, { + "sequence" : 2, + "diagnosisCodeableConcept" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/sid/icd-10-cm", + "code" : "A02", + "display" : "OTHER SALMONELLA INFECTIONS" + }, { + "system" : "http://hl7.org/fhir/sid/icd-10", + "code" : "A02", + "display" : "OTHER SALMONELLA INFECTIONS" + } ] + }, + "type" : [ { + "coding" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/ex-diagnosistype", + "code" : "principal", + "display" : "principal" + } ] + } ] + }, { + "sequence" : 3, + "diagnosisCodeableConcept" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/sid/icd-9-cm", + "code" : "A05", + "display" : "\"OTH BACTERIAL FOODBORNE INTOXICATIONS, NEC\"" + } ] + }, + "type" : [ { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBClaimDiagnosisType", + "code" : "secondary", + "display" : "Secondary" + } ] + } ] + }, { + "sequence" : 4, + "diagnosisCodeableConcept" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/sid/icd-10-cm", + "code" : "B04", + "display" : "MONKEYPOX" + }, { + "system" : "http://hl7.org/fhir/sid/icd-10", + "code" : "B04", + "display" : "MONKEYPOX" + } ] + }, + "type" : [ { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBClaimDiagnosisType", + "code" : "secondary", + "display" : "Secondary" + } ] + } ] + }, { + "sequence" : 5, + "diagnosisCodeableConcept" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/sid/icd-10-cm", + "code" : "B05", + "display" : "MEASLES" + }, { + "system" : "http://hl7.org/fhir/sid/icd-10", + "code" : "B05", + "display" : "MEASLES" + } ] + }, + "type" : [ { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBClaimDiagnosisType", + "code" : "secondary", + "display" : "Secondary" + } ] + } ] + }, { + "sequence" : 6, + "diagnosisCodeableConcept" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/sid/icd-10-cm", + "code" : "A52", + "display" : "LATE SYPHILIS" + }, { + "system" : "http://hl7.org/fhir/sid/icd-10", + "code" : "A52", + "display" : "LATE SYPHILIS" + } ] + }, + "type" : [ { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBClaimDiagnosisType", + "code" : "secondary", + "display" : "Secondary" + } ] + } ] + } ], + "insurance" : [ { + "focal" : true, + "coverage" : { + "reference" : "Coverage/part-b-567834" + } + } ], + "item" : [ { + "extension" : [ { + "url" : "https://bluebutton.cms.gov/resources/variables/carr_line_mtus_cnt", + "valueQuantity" : { + "value" : 1 + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/carr_line_mtus_cnt", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/carr_line_mtus_cnt", + "code" : "3" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/carr_line_mtus_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/carr_line_mtus_cd", + "code" : "3", + "display" : "Services" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/betos_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/betos_cd", + "code" : "T2D", + "display" : "Other tests - other" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/line_bene_prmry_pyr_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/line_bene_prmry_pyr_cd", + "code" : "E", + "display" : "Workers' compensation" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/line_prcsg_ind_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/line_prcsg_ind_cd", + "code" : "A", + "display" : "Allowed" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/line_service_deductible", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/line_service_deductible", + "code" : "0", + "display" : "Service Subject to Deductible" + } + } ], + "sequence" : 6, + "careTeamSequence" : [ 3, 4 ], + "diagnosisSequence" : [ 6 ], + "informationSequence" : [ 2 ], + "category" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/line_cms_type_srvc_cd", + "code" : "1", + "display" : "Medical care" + } ] + }, + "productOrService" : { + "extension" : [ { + "url" : "http://hl7.org/fhir/sid/ndc", + "valueCoding" : { + "system" : "http://hl7.org/fhir/sid/ndc", + "code" : "000000000", + "display" : "Fake Diluent - WATER" + } + } ], + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/hcpcs", + "code" : "92999" + } ] + }, + "modifier" : [ { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/hcpcs", + "version" : "5", + "code" : "LT" + } ] + } ], + "servicedPeriod" : { + "start" : "1999-10-27", + "end" : "1999-10-27" + }, + "locationCodeableConcept" : { + "extension" : [ { + "url" : "https://bluebutton.cms.gov/resources/variables/prvdr_state_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/prvdr_state_cd", + "code" : "IL" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/prvdr_zip", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/prvdr_zip", + "code" : "555558202" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/carr_line_prcng_lclty_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/carr_line_prcng_lclty_cd", + "code" : "15", + "display" : "CONNECTICUT" + } + }, { + "url" : "https://bluebutton.cms.gov/resources/variables/carr_line_clia_lab_num", + "valueIdentifier" : { + "system" : "https://bluebutton.cms.gov/resources/variables/carr_line_clia_lab_num", + "value" : "BB889999AA" + } + } ], + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/line_place_of_srvc_cd", + "code" : "11", + "display" : "Office. Location, other than a hospital, skilled nursing facility (SNF), military treatment facility, community health center, State or local public health clinic, or intermediate care facility (ICF), where the health professional routinely provides health examinations, diagnosis, and treatment of illness or injury on an ambulatory basis." + } ] + }, + "quantity" : { + "value" : 1.0 + }, + "adjudication" : [ { + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBAdjudicationDiscriminator", + "code" : "denialreason", + "display" : "Denial Reason" + } ] + }, + "reason" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/variables/carr_line_rdcd_pmt_phys_astn_c", + "code" : "0", + "display" : "N/A" + } ] + } + }, { + "extension" : [ { + "url" : "https://bluebutton.cms.gov/resources/variables/line_pmt_80_100_cd", + "valueCoding" : { + "system" : "https://bluebutton.cms.gov/resources/variables/line_pmt_80_100_cd", + "code" : "0", + "display" : "80%" + } + } ], + "category" : { + "coding" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/adjudication", + "code" : "benefit", + "display" : "Benefit Amount" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/line_nch_pmt_amt", + "display" : "Line NCH Medicare Payment Amount" + } ] + }, + "amount" : { + "value" : 37.5, + "currency" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBAdjudication", + "code" : "paidtopatient", + "display" : "Paid to patient" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/line_bene_pmt_amt", + "display" : "Line Payment Amount to Beneficiary" + } ] + }, + "amount" : { + "value" : 0.0, + "currency" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBAdjudication", + "code" : "paidtoprovider", + "display" : "Paid to provider" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/line_prvdr_pmt_amt", + "display" : "Line Provider Payment Amount" + } ] + }, + "amount" : { + "value" : 37.5, + "currency" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/adjudication", + "code" : "deductible", + "display" : "Deductible" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/line_bene_ptb_ddctbl_amt", + "display" : "Line Beneficiary Part B Deductible Amount" + } ] + }, + "amount" : { + "value" : 0.0, + "currency" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBAdjudication", + "code" : "priorpayerpaid", + "display" : "Prior payer paid" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/line_bene_prmry_pyr_pd_amt", + "display" : "Line Primary Payer (if not Medicare) Paid Amount" + } ] + }, + "amount" : { + "value" : 0.0, + "currency" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBAdjudication", + "code" : "coinsurance", + "display" : "Co-insurance" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/line_coinsrnc_amt", + "display" : "Line Beneficiary Coinsurance Amount" + } ] + }, + "amount" : { + "value" : 9.57, + "currency" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/adjudication", + "code" : "submitted", + "display" : "Submitted Amount" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/line_sbmtd_chrg_amt", + "display" : "Line Submitted Charge Amount" + } ] + }, + "amount" : { + "value" : 75.0, + "currency" : "USD" + } + }, { + "category" : { + "coding" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/adjudication", + "code" : "eligible", + "display" : "Eligible Amount" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/line_alowd_chrg_amt", + "display" : "Line Allowed Charge Amount" + } ] + }, + "amount" : { + "value" : 47.84, + "currency" : "USD" + } + } ] + } ], + "total" : [ { + "category" : { + "coding" : [ { + "system" : "http://hl7.org/fhir/us/carin-bb/CodeSystem/C4BBAdjudication", + "code" : "priorpayerpaid", + "display" : "Prior payer paid" + }, { + "system" : "https://bluebutton.cms.gov/resources/codesystem/adjudication", + "code" : "https://bluebutton.cms.gov/resources/variables/clm_tot_chrg_amt", + "display" : "Claim Total Charge Amount" + } ] + }, + "amount" : { + "value" : 0.0, + "currency" : "USD" + } + } ], + "payment" : { + "amount" : { + "value" : 199.99, + "currency" : "USD" + } + }, + "benefitBalance" : [ { + "category" : { + "coding" : [ { + "system" : "http://terminology.hl7.org/CodeSystem/ex-benefitcategory", + "code" : "1", + "display" : "Medical Care" + } ] + }, + "financial" : [ { + "type" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/benefit-balance", + "code" : "https://bluebutton.cms.gov/resources/variables/carr_clm_cash_ddctbl_apld_amt", + "display" : "Carrier Claim Cash Deductible Applied Amount (sum of all line-level deductible amounts)" + } ] + }, + "usedMoney" : { + "value" : 777.0, + "currency" : "USD" + } + }, { + "type" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/benefit-balance", + "code" : "https://bluebutton.cms.gov/resources/variables/nch_clm_prvdr_pmt_amt", + "display" : "NCH Claim Provider Payment Amount" + } ] + }, + "usedMoney" : { + "value" : 123.45, + "currency" : "USD" + } + }, { + "type" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/benefit-balance", + "code" : "https://bluebutton.cms.gov/resources/variables/nch_clm_bene_pmt_amt", + "display" : "NCH Claim Payment Amount to Beneficiary" + } ] + }, + "usedMoney" : { + "value" : 888.0, + "currency" : "USD" + } + }, { + "type" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/benefit-balance", + "code" : "https://bluebutton.cms.gov/resources/variables/nch_carr_clm_sbmtd_chrg_amt", + "display" : "NCH Carrier Claim Submitted Charge Amount (sum of all line-level submitted charges)" + } ] + }, + "usedMoney" : { + "value" : 245.04, + "currency" : "USD" + } + }, { + "type" : { + "coding" : [ { + "system" : "https://bluebutton.cms.gov/resources/codesystem/benefit-balance", + "code" : "https://bluebutton.cms.gov/resources/variables/nch_carr_clm_alowd_amt", + "display" : "NCH Carrier Claim Allowed Charge Amount (sum of all line-level allowed charges)" + } ] + }, + "usedMoney" : { + "value" : 166.23, + "currency" : "USD" + } + } ] + } ] + } + } ] +} \ No newline at end of file diff --git a/apps/bfd-shared-utils/src/main/java/gov/cms/bfd/sharedutils/TagCode.java b/apps/bfd-shared-utils/src/main/java/gov/cms/bfd/sharedutils/TagCode.java index 05cfbb862e..d0a39be73e 100644 --- a/apps/bfd-shared-utils/src/main/java/gov/cms/bfd/sharedutils/TagCode.java +++ b/apps/bfd-shared-utils/src/main/java/gov/cms/bfd/sharedutils/TagCode.java @@ -1,22 +1,30 @@ package gov.cms.bfd.sharedutils; +import lombok.Getter; + /** ENUM of TAG codes. */ +@Getter public enum TagCode { /** Tag Code R. */ - R("R"), + R("R", "Restricted"), /** Tag Code 42CFRPart2. */ - _42CFRPart2("42CFRPart2"); + _42CFRPart2("42CFRPart2", "42 CFR Part 2"); /** Name of the enum in the DB. */ - private String dbName; + private final String dbName; + + /** Display name. */ + private final String displayName; /** * Constructor. * * @param dbName Sets the DB name of the enum. + * @param displayName Sets display name of the enum. */ - TagCode(String dbName) { + TagCode(String dbName, String displayName) { this.dbName = dbName; + this.displayName = displayName; } @Override From 65253976270d4bfcc413601535ee6c6dd7994064 Mon Sep 17 00:00:00 2001 From: MahiFentaye <168698136+MahiFentaye@users.noreply.github.com> Date: Thu, 23 Jan 2025 16:10:31 -0500 Subject: [PATCH 13/13] Update TransformerConstants.java corrected url --- .../cms/bfd/server/war/commons/TransformerConstants.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/TransformerConstants.java b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/TransformerConstants.java index 7b496df935..2965956e56 100644 --- a/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/TransformerConstants.java +++ b/apps/bfd-server/bfd-server-war/src/main/java/gov/cms/bfd/server/war/commons/TransformerConstants.java @@ -705,15 +705,16 @@ public enum CurrencyIdentifier { "https://www.hhs.gov/sites/default/files/logo-white-lg.png"; /** - * HL7 CodeSystem v3-Confidentiality CodeSystem: . + * URL for v3 Confidentiality Code System HL7 v3 Confidentiality Code + * System. */ public static final String SAMHSA_CONFIDENTIALITY_CODE_SYSTEM_URL = "http://terminology.hl7.org/CodeSystem/v3-Confidentiality"; /** - * HL7 CodeSystem v3-ConfidentialityCodeSystem: . + * URL for v3 Act Code System v3 Act + * Code System. */ public static final String SAMHSA_ACT_CODE_SYSTEM_URL = "http://terminology.hl7.org/CodeSystem/v3-ActCode";