From 9a7edda5e03fa16b6a40afa32d5f7568326c1ae0 Mon Sep 17 00:00:00 2001 From: "sara.munich" Date: Thu, 26 Sep 2024 08:14:08 -0700 Subject: [PATCH 1/4] removed the "$" from the CapabilityStatement's operation names --- .../java/org/hl7/davinci/priorauth/endpoint/Metadata.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/hl7/davinci/priorauth/endpoint/Metadata.java b/src/main/java/org/hl7/davinci/priorauth/endpoint/Metadata.java index 37876ce7..366bb249 100644 --- a/src/main/java/org/hl7/davinci/priorauth/endpoint/Metadata.java +++ b/src/main/java/org/hl7/davinci/priorauth/endpoint/Metadata.java @@ -160,7 +160,7 @@ private CapabilityStatementRestComponent getRest(HttpServletRequest request) { rest.addResource(subscription); // operation - rest.addOperation().setName("$expunge") + rest.addOperation().setName("expunge") .setDefinition("https://smilecdr.com/docs/current/fhir_repository/deleting_data.html#drop-all-data") .setDocumentation( "For Demonstration Purposes Only. Deletes all data from the demonstration database. Not part of the Implementation Guide."); @@ -218,9 +218,9 @@ private CapabilityStatementRestResourceComponent getClaim() { claim.addInteraction().setCode(TypeRestfulInteraction.READ); claim.addInteraction().setCode(TypeRestfulInteraction.SEARCHTYPE); claim.addInteraction().setCode(TypeRestfulInteraction.DELETE); - claim.addOperation().setName("$submit") + claim.addOperation().setName("submit") .setDefinition("http://hl7.org/fhir/us/davinci-pas/OperationDefinition/Claim-submit"); - claim.addOperation().setName("$inquiry") + claim.addOperation().setName("inquiry") .setDefinition("http://hl7.org/fhir/us/davinci-pas/OperationDefinition/Claim-inquiry"); return claim; } From 61c68ebef133162eccf3edd57c6f4132006f35c4 Mon Sep 17 00:00:00 2001 From: "sara.munich" Date: Thu, 26 Sep 2024 13:30:31 -0700 Subject: [PATCH 2/4] added suport for a patient resource --- .../davinci/priorauth/endpoint/Metadata.java | 41 +++++++++++++++++-- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/hl7/davinci/priorauth/endpoint/Metadata.java b/src/main/java/org/hl7/davinci/priorauth/endpoint/Metadata.java index 366bb249..4f657c45 100644 --- a/src/main/java/org/hl7/davinci/priorauth/endpoint/Metadata.java +++ b/src/main/java/org/hl7/davinci/priorauth/endpoint/Metadata.java @@ -13,10 +13,7 @@ import org.hl7.davinci.priorauth.FhirUtils; import org.hl7.davinci.priorauth.Audit.AuditEventOutcome; import org.hl7.davinci.priorauth.Audit.AuditEventType; -import org.hl7.fhir.r4.model.CanonicalType; -import org.hl7.fhir.r4.model.CapabilityStatement; -import org.hl7.fhir.r4.model.Extension; -import org.hl7.fhir.r4.model.UriType; +import org.hl7.fhir.r4.model.*; import org.hl7.fhir.r4.model.AuditEvent.AuditEventAction; import org.hl7.fhir.r4.model.CapabilityStatement.CapabilityStatementImplementationComponent; import org.hl7.fhir.r4.model.CapabilityStatement.CapabilityStatementKind; @@ -152,10 +149,12 @@ private CapabilityStatementRestComponent getRest(HttpServletRequest request) { // resource CapabilityStatementRestResourceComponent claim = getClaim(); CapabilityStatementRestResourceComponent claimResponse = getClaimResponse(); + CapabilityStatementRestResourceComponent patient = getPatient(); CapabilityStatementRestResourceComponent bundle = getBundle(); CapabilityStatementRestResourceComponent subscription = getSubscriptionResponse(); rest.addResource(claim); rest.addResource(claimResponse); + rest.addResource(patient); rest.addResource(bundle); rest.addResource(subscription); @@ -225,6 +224,40 @@ private CapabilityStatementRestResourceComponent getClaim() { return claim; } + private CapabilityStatementRestResourceComponent getPatient() { + CapabilityStatementRestResourceComponent patient = new CapabilityStatementRestResourceComponent(); + patient.setType("Patient"); + + patient.addSupportedProfile("http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"); + + patient.addInteraction().setCode(TypeRestfulInteraction.READ); + patient.addInteraction().setCode(TypeRestfulInteraction.SEARCHTYPE); + patient.addInteraction().setCode(TypeRestfulInteraction.VREAD); + patient.addInteraction().setCode(TypeRestfulInteraction.HISTORYINSTANCE); + + patient.addInteraction().setCode(TypeRestfulInteraction.CREATE); + patient.addInteraction().setCode(TypeRestfulInteraction.UPDATE); + patient.addInteraction().setCode(TypeRestfulInteraction.DELETE); + + // Define supported search parameters + patient.addSearchParam().setName("identifier").setType(Enumerations.SearchParamType.TOKEN) + .setDefinition("http://hl7.org/fhir/SearchParameter/Patient-identifier") + .setDocumentation("Search for patients by identifier."); + patient.addSearchParam().setName("name").setType(Enumerations.SearchParamType.STRING) + .setDefinition("http://hl7.org/fhir/SearchParameter/Patient-name") + .setDocumentation("Search for patients by name."); + patient.addSearchParam().setName("birthdate").setType(Enumerations.SearchParamType.DATE) + .setDefinition("http://hl7.org/fhir/SearchParameter/Patient-birthdate") + .setDocumentation("Search for patients by birthdate."); + + patient.addOperation().setName("populate") + .setDefinition("http://hl7.org/fhir/uv/sdc/OperationDefinition/Questionnaire-populate"); + patient.addOperation().setName("everything") + .setDefinition("http://hl7.org/fhir/us/core/OperationDefinition/Patient-everything"); + + return patient; + } + private CapabilityStatementRestResourceComponent getSubscriptionResponse() { CapabilityStatementRestResourceComponent subscriptionResponse = new CapabilityStatementRestResourceComponent(); subscriptionResponse.setType("Subscription"); From 62e55018c9ed549841af57bed017b214772a3306 Mon Sep 17 00:00:00 2001 From: "sara.munich" Date: Tue, 1 Oct 2024 10:20:51 -0700 Subject: [PATCH 3/4] Added in support for the US Core resources Observation, Condition, and Procedure --- .../davinci/priorauth/endpoint/Metadata.java | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/src/main/java/org/hl7/davinci/priorauth/endpoint/Metadata.java b/src/main/java/org/hl7/davinci/priorauth/endpoint/Metadata.java index 4f657c45..ee6f8975 100644 --- a/src/main/java/org/hl7/davinci/priorauth/endpoint/Metadata.java +++ b/src/main/java/org/hl7/davinci/priorauth/endpoint/Metadata.java @@ -155,6 +155,9 @@ private CapabilityStatementRestComponent getRest(HttpServletRequest request) { rest.addResource(claim); rest.addResource(claimResponse); rest.addResource(patient); + rest.addResource(getObservation()); + rest.addResource(getCondition()); + rest.addResource(getProcedure()); rest.addResource(bundle); rest.addResource(subscription); @@ -258,6 +261,77 @@ private CapabilityStatementRestResourceComponent getPatient() { return patient; } + private CapabilityStatementRestResourceComponent getObservation() { + CapabilityStatementRestResourceComponent observation = new CapabilityStatementRestResourceComponent(); + observation.setType("Observation"); + + observation.addSupportedProfile("http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation"); + + observation.addInteraction().setCode(TypeRestfulInteraction.READ); + observation.addInteraction().setCode(TypeRestfulInteraction.SEARCHTYPE); + observation.addInteraction().setCode(TypeRestfulInteraction.VREAD); + observation.addInteraction().setCode(TypeRestfulInteraction.HISTORYINSTANCE); + + observation.addInteraction().setCode(TypeRestfulInteraction.CREATE); + observation.addInteraction().setCode(TypeRestfulInteraction.UPDATE); + observation.addInteraction().setCode(TypeRestfulInteraction.DELETE); + + // Define supported search parameters + observation.addSearchParam().setName("code").setType(Enumerations.SearchParamType.TOKEN) + .setDefinition("http://hl7.org/fhir/SearchParameter/Observation-code") + .setDocumentation("Search for observations by code."); + observation.addSearchParam().setName("date").setType(Enumerations.SearchParamType.DATE) + .setDefinition("http://hl7.org/fhir/SearchParameter/Observation-date") + .setDocumentation("Search for observations by date."); + + return observation; + } + + private CapabilityStatementRestResourceComponent getCondition() { + CapabilityStatementRestResourceComponent condition = new CapabilityStatementRestResourceComponent(); + condition.setType("Condition"); + + condition.addSupportedProfile("http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition"); + + condition.addInteraction().setCode(TypeRestfulInteraction.READ); + condition.addInteraction().setCode(TypeRestfulInteraction.SEARCHTYPE); + condition.addInteraction().setCode(TypeRestfulInteraction.CREATE); + condition.addInteraction().setCode(TypeRestfulInteraction.UPDATE); + condition.addInteraction().setCode(TypeRestfulInteraction.DELETE); + + condition.addSearchParam().setName("code").setType(Enumerations.SearchParamType.TOKEN) + .setDefinition("http://hl7.org/fhir/SearchParameter/Condition-code") + .setDocumentation("Search for conditions by code."); + condition.addSearchParam().setName("patient").setType(Enumerations.SearchParamType.REFERENCE) + .setDefinition("http://hl7.org/fhir/SearchParameter/Condition-patient") + .setDocumentation("Search for conditions by patient."); + + return condition; + } + + private CapabilityStatementRestResourceComponent getProcedure() { + CapabilityStatementRestResourceComponent procedure = new CapabilityStatementRestResourceComponent(); + procedure.setType("Procedure"); + + procedure.addSupportedProfile("http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure"); + + procedure.addInteraction().setCode(TypeRestfulInteraction.READ); + procedure.addInteraction().setCode(TypeRestfulInteraction.SEARCHTYPE); + procedure.addInteraction().setCode(TypeRestfulInteraction.CREATE); + procedure.addInteraction().setCode(TypeRestfulInteraction.UPDATE); + procedure.addInteraction().setCode(TypeRestfulInteraction.DELETE); + + // Define supported search parameters + procedure.addSearchParam().setName("date").setType(Enumerations.SearchParamType.DATE) + .setDefinition("http://hl7.org/fhir/SearchParameter/Procedure-date") + .setDocumentation("Search for procedures by date."); + procedure.addSearchParam().setName("status").setType(Enumerations.SearchParamType.TOKEN) + .setDefinition("http://hl7.org/fhir/SearchParameter/Procedure-status") + .setDocumentation("Search for procedures by status."); + + return procedure; + } + private CapabilityStatementRestResourceComponent getSubscriptionResponse() { CapabilityStatementRestResourceComponent subscriptionResponse = new CapabilityStatementRestResourceComponent(); subscriptionResponse.setType("Subscription"); From 83539799dc97fe3addf336bed1d9db0f5ee32655 Mon Sep 17 00:00:00 2001 From: "sara.munich" Date: Tue, 1 Oct 2024 10:30:39 -0700 Subject: [PATCH 4/4] fixed an issue with resouce setup --- .../org/hl7/davinci/priorauth/endpoint/Metadata.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/hl7/davinci/priorauth/endpoint/Metadata.java b/src/main/java/org/hl7/davinci/priorauth/endpoint/Metadata.java index ee6f8975..1b50a039 100644 --- a/src/main/java/org/hl7/davinci/priorauth/endpoint/Metadata.java +++ b/src/main/java/org/hl7/davinci/priorauth/endpoint/Metadata.java @@ -150,14 +150,17 @@ private CapabilityStatementRestComponent getRest(HttpServletRequest request) { CapabilityStatementRestResourceComponent claim = getClaim(); CapabilityStatementRestResourceComponent claimResponse = getClaimResponse(); CapabilityStatementRestResourceComponent patient = getPatient(); + CapabilityStatementRestResourceComponent observation = getObservation(); + CapabilityStatementRestResourceComponent condition = getCondition(); + CapabilityStatementRestResourceComponent procedure = getProcedure(); CapabilityStatementRestResourceComponent bundle = getBundle(); CapabilityStatementRestResourceComponent subscription = getSubscriptionResponse(); rest.addResource(claim); rest.addResource(claimResponse); rest.addResource(patient); - rest.addResource(getObservation()); - rest.addResource(getCondition()); - rest.addResource(getProcedure()); + rest.addResource(observation); + rest.addResource(condition); + rest.addResource(procedure); rest.addResource(bundle); rest.addResource(subscription);