├── .nvmrc
├── backend
├── .java-version
├── .jabbarc
├── db-setup
│ ├── requirements.txt
│ ├── .pgpass_ci
│ ├── .pgpass
│ ├── create-metabase-db.sh
│ ├── reset-metabase-db.sql
│ ├── migrate-devices.sh
│ ├── nuke-db.sh
│ ├── Dockerfile
│ ├── snapshot-db.sh
│ ├── create-db.sh
│ └── migrate-devices.sql
├── src
│ ├── test
│ │ └── resources
│ │ │ ├── patientBulkUpload
│ │ │ ├── empty.csv
│ │ │ ├── validRequiredOnly.csv
│ │ │ ├── missingHeaders.csv
│ │ │ ├── missingRequiredFields.csv
│ │ │ ├── invalidValues.csv
│ │ │ ├── validEmptyOptionalValues.csv
│ │ │ ├── alternateValues.csv
│ │ │ └── valid.csv
│ │ │ ├── mockito-extensions
│ │ │ └── org.mockito.plugins.MockMaker
│ │ │ ├── templates
│ │ │ └── test-template.html
│ │ │ ├── graphql-test
│ │ │ ├── update-org-settings.graphql
│ │ │ ├── remove-from-queue.graphql
│ │ │ ├── specimen-type-query.graphql
│ │ │ ├── supported-disease-query.graphql
│ │ │ ├── device-type-query.graphql
│ │ │ ├── patient-link-current-query.graphql
│ │ │ ├── users-query.graphql
│ │ │ ├── update-feature-flag.graphql
│ │ │ ├── deleted-person-query.graphql
│ │ │ ├── update-user-role.graphql
│ │ │ ├── facility-stats-query.graphql
│ │ │ ├── facilities-query.graphql
│ │ │ ├── patient-link-verify-query.graphql
│ │ │ ├── update-user-email.graphql
│ │ │ ├── org-links-query.graphql
│ │ │ ├── device-type-add.graphql
│ │ │ ├── get-pending-organizations.graphql
│ │ │ ├── update-facility-feature-flag.graphql
│ │ │ ├── device-type-update.graphql
│ │ │ ├── set-organization-identity-verified.graphql
│ │ │ ├── dashboard-metrics.graphql
│ │ │ ├── reset-user-mfa.graphql
│ │ │ ├── reset-user-password.graphql
│ │ │ ├── resend-activation-email.graphql
│ │ │ ├── patient-link-submit.graphql
│ │ │ ├── organization-query.graphql
│ │ │ ├── add-to-queue.graphql
│ │ │ ├── organization-by-name-query.graphql
│ │ │ ├── person-with-facility-query.graphql
│ │ │ ├── set-user-is-deleted.graphql
│ │ │ ├── person-query.graphql
│ │ │ ├── delete-person.graphql
│ │ │ ├── person-with-last-test-result-query.graphql
│ │ │ ├── set-current-user-tenant-data-access.graphql
│ │ │ ├── organization-level-metrics.graphql
│ │ │ ├── test-result-query.graphql
│ │ │ └── add-to-queue-with-symptoms.graphql
│ │ │ ├── deserialization
│ │ │ ├── http-request-details
│ │ │ │ ├── partial.json
│ │ │ │ └── full.json
│ │ │ └── graphql-inputs
│ │ │ │ └── full.json
│ │ │ ├── requests
│ │ │ └── organizationAccountRequest.json
│ │ │ ├── attachments
│ │ │ └── test-document.pdf
│ │ │ └── fhir
│ │ │ └── practitioner.json
│ └── main
│ │ ├── java
│ │ └── gov
│ │ │ └── cdc
│ │ │ └── usds
│ │ │ └── simplereport
│ │ │ ├── api
│ │ │ ├── testresult
│ │ │ │ └── TestResultDataFetcher.java
│ │ │ ├── devicetype
│ │ │ │ └── PublicDeviceType.java
│ │ │ ├── model
│ │ │ │ ├── universalreporting
│ │ │ │ │ └── ResultScaleType.java
│ │ │ │ ├── errors
│ │ │ │ │ ├── DryRunException.java
│ │ │ │ │ ├── NoDataLoaderFoundException.java
│ │ │ │ │ ├── ExpiredPatientLinkException.java
│ │ │ │ │ ├── AimsUploadException.java
│ │ │ │ │ ├── InvalidTwilioCallbackException.java
│ │ │ │ │ ├── InvalidTwilioMessageIdentifierException.java
│ │ │ │ │ ├── InvalidPatientLinkException.java
│ │ │ │ │ ├── BulkUploadDisabledException.java
│ │ │ │ │ ├── InvalidPatientSelfRegistrationLinkException.java
│ │ │ │ │ └── DependencyFailureException.java
│ │ │ │ ├── FacilityStats.java
│ │ │ │ ├── accountrequest
│ │ │ │ │ ├── AccountResponse.java
│ │ │ │ │ ├── OrganizationAccountResponse.java
│ │ │ │ │ └── IdentityVerificationQuestionsResponse.java
│ │ │ │ ├── TopLevelDashboardMetrics.java
│ │ │ │ ├── useraccountcreation
│ │ │ │ │ ├── FactorAndQrCode.java
│ │ │ │ │ ├── FactorAndActivation.java
│ │ │ │ │ ├── RequestConstants.java
│ │ │ │ │ ├── UserAccountStatus.java
│ │ │ │ │ ├── EnrollMfaRequest.java
│ │ │ │ │ ├── SetPasswordRequest.java
│ │ │ │ │ └── ActivateAccountRequest.java
│ │ │ │ ├── AddressInput.java
│ │ │ │ ├── ReportStreamCallbackRequest.java
│ │ │ │ ├── CreateSpecimenType.java
│ │ │ │ ├── AggregateFacilityMetrics.java
│ │ │ │ ├── UpdateSpecimenType.java
│ │ │ │ ├── OrganizationLevelDashboardMetrics.java
│ │ │ │ └── AddFacilityInput.java
│ │ │ ├── InternalIdResolver.java
│ │ │ ├── PersonNameResolver.java
│ │ │ ├── converter
│ │ │ │ ├── FhirContextProvider.java
│ │ │ │ └── HapiContextProvider.java
│ │ │ ├── MappingConstants.java
│ │ │ └── uploads
│ │ │ │ └── PatientBulkUploadResponse.java
│ │ │ ├── db
│ │ │ ├── model
│ │ │ │ ├── auxiliary
│ │ │ │ │ ├── PhoneType.java
│ │ │ │ │ ├── CodingRecord.java
│ │ │ │ │ ├── Pipeline.java
│ │ │ │ │ ├── UploadStatus.java
│ │ │ │ │ ├── ArchivedStatus.java
│ │ │ │ │ ├── OrderStatus.java
│ │ │ │ │ ├── TestResult.java
│ │ │ │ │ ├── OptionalBoolean.java
│ │ │ │ │ ├── DataHubUploadStatus.java
│ │ │ │ │ ├── ResultUploadErrorSource.java
│ │ │ │ │ ├── SnomedConceptRecord.java
│ │ │ │ │ ├── TestCorrectionStatus.java
│ │ │ │ │ ├── TestResultDeliveryPreference.java
│ │ │ │ │ ├── PersonRole.java
│ │ │ │ │ ├── ResultUploadErrorType.java
│ │ │ │ │ ├── HL7BatchMessage.java
│ │ │ │ │ ├── FHIRBundleRecord.java
│ │ │ │ │ ├── MultiplexResultInput.java
│ │ │ │ │ ├── TestResultWithCount.java
│ │ │ │ │ ├── SupportedDiseaseTestResult.java
│ │ │ │ │ ├── SubmissionSummary.java
│ │ │ │ │ └── AimsSubmissionSummary.java
│ │ │ │ ├── Eternal.java
│ │ │ │ ├── LocatedEntity.java
│ │ │ │ ├── PersonEntity.java
│ │ │ │ ├── DatabaseEntity.java
│ │ │ │ └── DeviceSpecimenTypeNewId.java
│ │ │ └── repository
│ │ │ │ ├── ProviderRepository.java
│ │ │ │ ├── UploadDiseaseDetailsRepository.java
│ │ │ │ ├── FeatureFlagRepository.java
│ │ │ │ ├── PatientLinkFailedAttemptRepository.java
│ │ │ │ ├── TextMessageStatusRepository.java
│ │ │ │ ├── DeletableEntityRepository.java
│ │ │ │ ├── FacilityFeatureFlagRepository.java
│ │ │ │ ├── TextMessageSentRepository.java
│ │ │ │ └── TimeOfConsentRepository.java
│ │ │ ├── service
│ │ │ ├── supportescalation
│ │ │ │ └── SupportEscalationService.java
│ │ │ ├── sms
│ │ │ │ └── SmsProviderWrapper.java
│ │ │ ├── model
│ │ │ │ ├── Wrapper.java
│ │ │ │ ├── ExistingPatientCheckRequestBody.java
│ │ │ │ ├── TimezoneInfo.java
│ │ │ │ ├── IdentitySupplier.java
│ │ │ │ ├── reportstream
│ │ │ │ │ └── TokenResponse.java
│ │ │ │ └── SmsAPICallResult.java
│ │ │ ├── email
│ │ │ │ └── EmailProvider.java
│ │ │ ├── errors
│ │ │ │ ├── InvalidAddressException.java
│ │ │ │ ├── InvalidBulkTestResultUploadException.java
│ │ │ │ ├── InvalidRSAPrivateKeyException.java
│ │ │ │ └── NobodyAuthenticatedException.java
│ │ │ └── ReportStreamCallbackService.java
│ │ │ ├── properties
│ │ │ └── SupportEscalationProperties.java
│ │ │ ├── config
│ │ │ └── authorization
│ │ │ │ ├── NamedPrincipal.java
│ │ │ │ ├── TenantDataAuthenticationProvider.java
│ │ │ │ └── SiteAdminPrincipal.java
│ │ │ └── utils
│ │ │ └── AsyncLoggingUtils.java
│ │ └── resources
│ │ ├── application-no-okta-mgmt.yaml
│ │ ├── hibernate.properties
│ │ ├── application-server-debug.yaml
│ │ ├── application-prod.yaml
│ │ ├── application-okta-prod.yaml
│ │ ├── application-okta-stg.yaml
│ │ ├── application-okta-training.yaml
│ │ ├── application-okta-test.yaml
│ │ ├── application-okta-dev.yaml
│ │ ├── application-okta-dev2.yaml
│ │ ├── application-okta-dev3.yaml
│ │ ├── application-okta-dev4.yaml
│ │ ├── application-okta-dev5.yaml
│ │ ├── application-okta-dev6.yaml
│ │ ├── application-okta-pentest.yaml
│ │ ├── application-azure-demo.yaml
│ │ ├── application-azure-pentest.yaml
│ │ ├── application-azure-training.yaml
│ │ └── templates
│ │ └── waitlist-request.html
├── settings.gradle
├── .env.development
├── .dockerignore
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── lombok.config
├── docker-compose.prod.yml
├── locust
│ └── locustfile.py
└── Dockerfile.db-liquibase-action
├── frontend
├── .nvmrc
├── __mocks__
│ └── styleMock.js
├── src
│ ├── app
│ │ ├── commonComponents
│ │ │ ├── types.d.ts
│ │ │ ├── Page
│ │ │ │ ├── Page.scss
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── Page.test.tsx.snap
│ │ │ │ ├── Page.stories.tsx
│ │ │ │ └── Page.test.tsx
│ │ │ ├── CardBackground
│ │ │ │ ├── CardBackground.scss
│ │ │ │ └── CardBackground.tsx
│ │ │ ├── MenuButton.scss
│ │ │ ├── Optional.tsx
│ │ │ ├── ActionsMenu.scss
│ │ │ ├── MaintenanceBanner.scss
│ │ │ ├── USAGovBanner.scss
│ │ │ ├── ScrollToTopOnMount.tsx
│ │ │ ├── LabeledText.tsx
│ │ │ ├── CopyTooltip.tsx
│ │ │ ├── Required.tsx
│ │ │ ├── USAGovBanner.stories.tsx
│ │ │ ├── RequiredMessage.stories.tsx
│ │ │ ├── LinkWithQuery.tsx
│ │ │ ├── Button
│ │ │ │ └── Button.stories.tsx
│ │ │ ├── UserDetails
│ │ │ │ └── UserHeading.scss
│ │ │ ├── PageNotFound.tsx
│ │ │ ├── Optional.stories.tsx
│ │ │ ├── RequiredMessage.tsx
│ │ │ ├── HashLink.tsx
│ │ │ ├── Card
│ │ │ │ └── CardLogoHeader.tsx
│ │ │ ├── Required.stories.tsx
│ │ │ ├── TestResultGuidance
│ │ │ │ ├── ChlamydiaResultGuidance.test.tsx
│ │ │ │ ├── GonorrheaResultGuidance.test.tsx
│ │ │ │ └── HepatitisCResultGuidance.test.tsx
│ │ │ └── TextWithTooltip.scss
│ │ ├── supportAdmin
│ │ │ ├── admin.graphql
│ │ │ ├── Components
│ │ │ │ ├── SeparatorLine.scss
│ │ │ │ └── SeparatorLine.tsx
│ │ │ ├── PendingOrganizations
│ │ │ │ └── utils.tsx
│ │ │ ├── DeviceType
│ │ │ │ ├── types.d.ts
│ │ │ │ └── mocks
│ │ │ │ │ ├── mockSupportedDiseaseTestPerformedMultiplex.ts
│ │ │ │ │ ├── mockSupportedDiseaseTestPerformedHIV.ts
│ │ │ │ │ └── mockSupportedDiseaseTestPerformedSyphilis.ts
│ │ │ └── SupportAdmin.test.tsx
│ │ ├── utils
│ │ │ ├── reload.ts
│ │ │ ├── getNodeEnv.ts
│ │ │ ├── getNodeEnv.test.ts
│ │ │ ├── email.ts
│ │ │ ├── jestHelpers.tsx
│ │ │ ├── state.ts
│ │ │ ├── number.ts
│ │ │ ├── serviceWorkerHelper.ts
│ │ │ └── languages.tsx
│ │ ├── universalReporting
│ │ │ ├── TestDetailFormSubsection.scss
│ │ │ ├── LabReportForm.scss
│ │ │ └── ReviewFormSection.scss
│ │ ├── testQueue
│ │ │ ├── test-timer.mp3
│ │ │ ├── TestCardForm
│ │ │ │ ├── diseaseSpecificComponents
│ │ │ │ │ └── TestResultInputGroup.scss
│ │ │ │ └── TestCardForm.scss
│ │ │ ├── TestQueue.scss
│ │ │ ├── addToQueue
│ │ │ │ └── types.ts
│ │ │ └── mocks
│ │ │ │ └── mockSupportedDiseaseCovid.ts
│ │ ├── facilitySelect
│ │ │ └── FacilitySelect.scss
│ │ ├── testResults
│ │ │ ├── uploads
│ │ │ │ └── Uploads.scss
│ │ │ ├── HeaderSizeFix.scss
│ │ │ ├── mocks
│ │ │ │ ├── patients.mock.tsx
│ │ │ │ ├── facilities.mock.tsx
│ │ │ │ ├── resultForEmail.ts
│ │ │ │ └── resultForText.ts
│ │ │ ├── viewResults
│ │ │ │ └── actionMenuModals
│ │ │ │ │ └── EmailTestResultModal.scss
│ │ │ ├── ResultsNav.test.tsx
│ │ │ └── ResultsNavWrapper.tsx
│ │ ├── Settings
│ │ │ ├── Users
│ │ │ │ ├── FacilityAccessTab.scss
│ │ │ │ └── UserDetailUtils.tsx
│ │ │ ├── Facility
│ │ │ │ └── Components
│ │ │ │ │ └── OrderingProvider.scss
│ │ │ └── operations.graphql
│ │ ├── __snapshots__
│ │ │ ├── PilotApp.test.tsx.snap
│ │ │ └── ReportingApp.test.tsx.snap
│ │ ├── patients
│ │ │ ├── TestResultDeliveryPreference.ts
│ │ │ ├── Components
│ │ │ │ └── PersonForm.scss
│ │ │ └── UploadPatients.scss
│ │ ├── analytics
│ │ │ ├── TouchpointsButton.tsx
│ │ │ └── operations.graphql
│ │ ├── VersionEnforcer.tsx
│ │ ├── signUp
│ │ │ ├── IdentityVerification
│ │ │ │ ├── NextSteps.test.tsx
│ │ │ │ ├── NextSteps.stories.tsx
│ │ │ │ ├── QuestionsForm.scss
│ │ │ │ └── Success.test.tsx
│ │ │ └── Organization
│ │ │ │ ├── SignUpGoals.stories.tsx
│ │ │ │ ├── RequestAccess.stories.tsx
│ │ │ │ ├── OrganizationForm.stories.tsx
│ │ │ │ └── RequestTestResult.stories.tsx
│ │ ├── accountCreation
│ │ │ ├── MfaOktaVerify
│ │ │ │ ├── MfaOktaVerify.tsx
│ │ │ │ └── MfaOktaVerify.stories.tsx
│ │ │ ├── MfaSms
│ │ │ │ └── MfaSms.stories.tsx
│ │ │ ├── MfaPhone
│ │ │ │ └── MfaPhone.stories.tsx
│ │ │ ├── MfaSelect
│ │ │ │ └── MfaSelect.stories.tsx
│ │ │ ├── MfaComplete
│ │ │ │ ├── MfaComplete.test.tsx
│ │ │ │ └── MfaComplete.stories.tsx
│ │ │ ├── MfaGoogleAuthVerify
│ │ │ │ ├── MfaGoogleAuthVerify.tsx
│ │ │ │ └── MfaGoogleAuthVerify.stories.tsx
│ │ │ ├── MfaEmailVerify
│ │ │ │ └── MfaEmailVerify.stories.tsx
│ │ │ ├── SecurityQuestion
│ │ │ │ └── SecurityQuestion.stories.tsx
│ │ │ ├── MfaOkta
│ │ │ │ └── MfaOkta.tsx
│ │ │ └── MfaGoogleAuth
│ │ │ │ └── MfaGoogleAuth.tsx
│ │ ├── telemetry-provider.tsx
│ │ ├── HealthChecks.tsx
│ │ └── uploads
│ │ │ └── DeviceLookup
│ │ │ └── DeviceLookup.scss
│ ├── scss
│ │ ├── settings
│ │ │ └── _index.scss
│ │ ├── base
│ │ │ └── _index.scss
│ │ ├── components
│ │ │ ├── _index.scss
│ │ │ ├── _table.scss
│ │ │ ├── _datepicker.scss
│ │ │ ├── _link.scss
│ │ │ └── _card.scss
│ │ ├── App.scss
│ │ └── README.md
│ ├── patientApp
│ │ ├── PatientHeader.scss
│ │ └── LanguageToggler.scss
│ ├── img
│ │ ├── usds-logo.png
│ │ ├── favicons
│ │ │ ├── favicon.ico
│ │ │ ├── favicon.png
│ │ │ ├── favicon-114.png
│ │ │ ├── favicon-144.png
│ │ │ ├── favicon-16.png
│ │ │ ├── favicon-192.png
│ │ │ ├── favicon-40.png
│ │ │ ├── favicon-57.png
│ │ │ └── favicon-72.png
│ │ ├── close.svg
│ │ └── search--white.svg
│ ├── fonts
│ │ ├── public-sans
│ │ │ ├── PublicSans-Black.ttf
│ │ │ ├── PublicSans-Bold.ttf
│ │ │ ├── PublicSans-Bold.woff
│ │ │ ├── PublicSans-Light.ttf
│ │ │ ├── PublicSans-Thin.ttf
│ │ │ ├── PublicSans-Thin.woff
│ │ │ ├── PublicSans-Black.woff
│ │ │ ├── PublicSans-Black.woff2
│ │ │ ├── PublicSans-Bold.woff2
│ │ │ ├── PublicSans-Italic.ttf
│ │ │ ├── PublicSans-Italic.woff
│ │ │ ├── PublicSans-Light.woff
│ │ │ ├── PublicSans-Light.woff2
│ │ │ ├── PublicSans-Medium.ttf
│ │ │ ├── PublicSans-Medium.woff
│ │ │ ├── PublicSans-Regular.ttf
│ │ │ ├── PublicSans-Thin.woff2
│ │ │ ├── PublicSans-BoldItalic.ttf
│ │ │ ├── PublicSans-ExtraBold.ttf
│ │ │ ├── PublicSans-ExtraBold.woff
│ │ │ ├── PublicSans-ExtraLight.ttf
│ │ │ ├── PublicSans-Italic.woff2
│ │ │ ├── PublicSans-Medium.woff2
│ │ │ ├── PublicSans-Regular.woff
│ │ │ ├── PublicSans-Regular.woff2
│ │ │ ├── PublicSans-SemiBold.ttf
│ │ │ ├── PublicSans-SemiBold.woff
│ │ │ ├── PublicSans-SemiBold.woff2
│ │ │ ├── PublicSans-ThinItalic.ttf
│ │ │ ├── PublicSans-BlackItalic.ttf
│ │ │ ├── PublicSans-BlackItalic.woff
│ │ │ ├── PublicSans-BoldItalic.woff
│ │ │ ├── PublicSans-BoldItalic.woff2
│ │ │ ├── PublicSans-ExtraBold.woff2
│ │ │ ├── PublicSans-ExtraLight.woff
│ │ │ ├── PublicSans-ExtraLight.woff2
│ │ │ ├── PublicSans-LightItalic.ttf
│ │ │ ├── PublicSans-LightItalic.woff
│ │ │ ├── PublicSans-MediumItalic.ttf
│ │ │ ├── PublicSans-ThinItalic.woff
│ │ │ ├── PublicSans-ThinItalic.woff2
│ │ │ ├── PublicSans-BlackItalic.woff2
│ │ │ ├── PublicSans-ExtraBoldItalic.ttf
│ │ │ ├── PublicSans-LightItalic.woff2
│ │ │ ├── PublicSans-MediumItalic.woff
│ │ │ ├── PublicSans-MediumItalic.woff2
│ │ │ ├── PublicSans-SemiBoldItalic.ttf
│ │ │ ├── PublicSans-SemiBoldItalic.woff
│ │ │ ├── PublicSans-ExtraBoldItalic.woff
│ │ │ ├── PublicSans-ExtraBoldItalic.woff2
│ │ │ ├── PublicSans-ExtraLightItalic.ttf
│ │ │ ├── PublicSans-ExtraLightItalic.woff
│ │ │ ├── PublicSans-SemiBoldItalic.woff2
│ │ │ └── PublicSans-ExtraLightItalic.woff2
│ │ └── merriweather
│ │ │ ├── Latin-Merriweather-Black.ttf
│ │ │ ├── Latin-Merriweather-Black.woff
│ │ │ ├── Latin-Merriweather-Bold.ttf
│ │ │ ├── Latin-Merriweather-Bold.woff
│ │ │ ├── Latin-Merriweather-Bold.woff2
│ │ │ ├── Latin-Merriweather-Italic.ttf
│ │ │ ├── Latin-Merriweather-Light.ttf
│ │ │ ├── Latin-Merriweather-Light.woff
│ │ │ ├── Latin-Merriweather-Black.woff2
│ │ │ ├── Latin-Merriweather-Italic.woff
│ │ │ ├── Latin-Merriweather-Italic.woff2
│ │ │ ├── Latin-Merriweather-Light.woff2
│ │ │ ├── Latin-Merriweather-Regular.ttf
│ │ │ ├── Latin-Merriweather-Regular.woff
│ │ │ ├── Latin-Merriweather-BlackItalic.ttf
│ │ │ ├── Latin-Merriweather-BoldItalic.ttf
│ │ │ ├── Latin-Merriweather-BoldItalic.woff
│ │ │ ├── Latin-Merriweather-LightItalic.ttf
│ │ │ ├── Latin-Merriweather-Regular.woff2
│ │ │ ├── Latin-Merriweather-BlackItalic.woff
│ │ │ ├── Latin-Merriweather-BlackItalic.woff2
│ │ │ ├── Latin-Merriweather-BoldItalic.woff2
│ │ │ ├── Latin-Merriweather-LightItalic.woff
│ │ │ └── Latin-Merriweather-LightItalic.woff2
│ ├── stories
│ │ └── __mocks__
│ │ │ └── appInsights.ts
│ ├── react-i18next.d.ts
│ ├── index.tsx
│ ├── i18n.ts
│ └── react-app-env.d.ts
├── .prettierignore
├── public
│ ├── robots.txt
│ ├── usds-32x32.png
│ └── manifest.json
├── .dockerignore
├── .env.test
├── mockServiceWorker.js
├── .stylelintrc.json
├── .env.production
├── codegen.yml
├── .gitignore
├── .env
└── .env.development
├── .env.test
├── cypress
├── .gitignore
├── fixtures
│ └── example.json
├── utils
│ ├── graphql-test-utils.js
│ └── request-utils.js
├── .env.e2e.sample
└── eslint.config.mjs
├── ops
├── .gitignore
├── services
│ ├── postgres_db
│ │ ├── _data.tf
│ │ └── _output.tf
│ ├── pagerduty
│ │ ├── _outputs.tf
│ │ ├── _data.tf
│ │ ├── _config.tf
│ │ └── _var.tf
│ ├── frontend
│ │ └── outputs.tf
│ ├── metabase
│ │ ├── database
│ │ │ ├── _var.tf
│ │ │ └── main.tf
│ │ └── service
│ │ │ └── _output.tf
│ ├── app_functions
│ │ ├── test_data_publisher
│ │ │ ├── functions
│ │ │ │ ├── .funcignore
│ │ │ │ ├── jest.config.js
│ │ │ │ ├── host.json
│ │ │ │ ├── SendToAIMS
│ │ │ │ │ └── telemetry.ts
│ │ │ │ └── tsconfig.json
│ │ │ └── infra
│ │ │ │ └── _config.tf
│ │ └── report_stream_batched_publisher
│ │ │ ├── functions
│ │ │ ├── .funcignore
│ │ │ ├── jest.config.js
│ │ │ ├── host.json
│ │ │ └── tsconfig.json
│ │ │ └── infra
│ │ │ ├── _output.tf
│ │ │ └── _config.tf
│ ├── web_application_firewall
│ │ ├── _output.tf
│ │ └── _var.tf
│ ├── okta-global
│ │ ├── _data.tf
│ │ ├── _var.tf
│ │ └── _config.tf
│ ├── app_gateway
│ │ ├── _data.tf
│ │ └── _output.tf
│ ├── okta-app
│ │ ├── _output.tf
│ │ ├── _config.tf
│ │ └── _data.tf
│ ├── basic_vm
│ │ └── _var.tf
│ ├── container_instances
│ │ └── db_client
│ │ │ └── image
│ │ │ └── docker-compose.yml
│ ├── nat_gateway
│ │ └── _var.tf
│ ├── app_service_autoscale
│ │ └── _var.tf
│ ├── alerts
│ │ └── app_service_metrics
│ │ │ └── data.tf
│ ├── virtual_network
│ │ └── _output.tf
│ └── app_service
│ │ └── _data.tf
├── global
│ ├── _var.tf
│ ├── _data.tf
│ └── acr.tf
├── dev5
│ ├── metabase.tf
│ └── _config.tf
├── dev6
│ ├── metabase.tf
│ └── _config.tf
├── demo
│ ├── metabase.tf
│ └── _config.tf
├── pentest
│ ├── metabase.tf
│ └── _config.tf
├── training
│ ├── metabase.tf
│ └── _config.tf
├── dev
│ └── _config.tf
├── dev2
│ └── _config.tf
├── dev3
│ └── _config.tf
├── dev4
│ └── _config.tf
├── prod
│ └── _config.tf
├── stg
│ └── _config.tf
└── test
│ └── _config.tf
├── graphql.config.yml
├── .env.sample
├── .gitignore
├── yarn.lock
├── docker-compose.ci.yml
├── .run
├── Frontend.run.xml
├── e2e local open.run.xml
├── e2e local headless.run.xml
└── storybook.run.xml
├── .dockerignore
├── .env.cypress.remote.sample
└── .github
└── actions
├── stg-wait-for-slot-readiness
└── action.yml
├── stg-wait-for-slot-commit
└── action.yml
└── build-test-data-publisher-function-app
└── action.yml
/.nvmrc:
--------------------------------------------------------------------------------
1 | 24.*
--------------------------------------------------------------------------------
/backend/.java-version:
--------------------------------------------------------------------------------
1 | 17
2 |
--------------------------------------------------------------------------------
/frontend/.nvmrc:
--------------------------------------------------------------------------------
1 | 24.*
2 |
--------------------------------------------------------------------------------
/backend/.jabbarc:
--------------------------------------------------------------------------------
1 | adopt@1.11-0
2 |
--------------------------------------------------------------------------------
/backend/db-setup/requirements.txt:
--------------------------------------------------------------------------------
1 | faker
2 |
--------------------------------------------------------------------------------
/.env.test:
--------------------------------------------------------------------------------
1 | SR_DB_PORT=5444
2 | DB_NAME="test-db"
--------------------------------------------------------------------------------
/backend/src/test/resources/patientBulkUpload/empty.csv:
--------------------------------------------------------------------------------
1 | ,,
--------------------------------------------------------------------------------
/cypress/.gitignore:
--------------------------------------------------------------------------------
1 | screenshots/
2 | videos/
3 | .env.e2e
--------------------------------------------------------------------------------
/frontend/__mocks__/styleMock.js:
--------------------------------------------------------------------------------
1 | module.exports = {};
2 |
--------------------------------------------------------------------------------
/backend/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'simple-report'
2 |
--------------------------------------------------------------------------------
/ops/.gitignore:
--------------------------------------------------------------------------------
1 | .terraform/
2 | *.tfstate*
3 | *.tfplan*
4 |
--------------------------------------------------------------------------------
/graphql.config.yml:
--------------------------------------------------------------------------------
1 | schema: "./backend/src/main/resources/graphql/*.graphqls"
--------------------------------------------------------------------------------
/ops/services/postgres_db/_data.tf:
--------------------------------------------------------------------------------
1 | data "azurerm_client_config" "current" {}
--------------------------------------------------------------------------------
/backend/.env.development:
--------------------------------------------------------------------------------
1 | SR_DB_PORT=5433
2 | OKTA_TESTING_DISABLEHTTPSCHECK=true
3 |
--------------------------------------------------------------------------------
/backend/db-setup/.pgpass_ci:
--------------------------------------------------------------------------------
1 | localhost:*:*:postgres:this_is_a_super_secure_admin_password
2 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/types.d.ts:
--------------------------------------------------------------------------------
1 | type translateFn = (arg0: string) => string;
2 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/testresult/TestResultDataFetcher.java:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/backend/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker:
--------------------------------------------------------------------------------
1 | mock-maker-inline
2 |
--------------------------------------------------------------------------------
/frontend/src/scss/settings/_index.scss:
--------------------------------------------------------------------------------
1 | @forward "uswds-theme";
2 | @forward "prime-variables";
3 |
--------------------------------------------------------------------------------
/backend/.dockerignore:
--------------------------------------------------------------------------------
1 | .dockerignore
2 | Dockerfile
3 | Dockerfile.db-rollback
4 | Dockerfile.prod
5 | build
--------------------------------------------------------------------------------
/backend/src/main/resources/application-no-okta-mgmt.yaml:
--------------------------------------------------------------------------------
1 | okta:
2 | oauth2:
3 | client-id: NONE
4 |
--------------------------------------------------------------------------------
/frontend/.prettierignore:
--------------------------------------------------------------------------------
1 | # GENERATED FILE (ignore forever or until moved)
2 | src/styles/App.css
3 | build/
--------------------------------------------------------------------------------
/frontend/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/Page/Page.scss:
--------------------------------------------------------------------------------
1 | .pilot-header {
2 | background-color: #162e51;
3 | }
4 |
--------------------------------------------------------------------------------
/backend/db-setup/.pgpass:
--------------------------------------------------------------------------------
1 | localhost:*:simple_report:postgres:admin_password_for_local_dev_is_not_very_secure
2 |
--------------------------------------------------------------------------------
/frontend/.dockerignore:
--------------------------------------------------------------------------------
1 | Dockerfile
2 | cypress/screenshots
3 | cypress/videos
4 | wiremock*.jar
5 | node_modules
--------------------------------------------------------------------------------
/frontend/src/app/supportAdmin/admin.graphql:
--------------------------------------------------------------------------------
1 | mutation SendSupportEscalation {
2 | sendSupportEscalation
3 | }
--------------------------------------------------------------------------------
/frontend/src/app/utils/reload.ts:
--------------------------------------------------------------------------------
1 | export default function reload() {
2 | window.location.reload();
3 | }
4 |
--------------------------------------------------------------------------------
/frontend/src/patientApp/PatientHeader.scss:
--------------------------------------------------------------------------------
1 | @media print {
2 | .header {
3 | display: none;
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/frontend/src/scss/base/_index.scss:
--------------------------------------------------------------------------------
1 | @forward "app-layout";
2 | @forward "prime-styles";
3 | @forward "utilities";
4 |
--------------------------------------------------------------------------------
/backend/src/main/resources/hibernate.properties:
--------------------------------------------------------------------------------
1 | hibernate.types.print.banner=false
2 | hibernate.jdbc.time_zone=UTC
3 |
--------------------------------------------------------------------------------
/frontend/public/usds-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/public/usds-32x32.png
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/CardBackground/CardBackground.scss:
--------------------------------------------------------------------------------
1 | .card__background {
2 | min-height: 100vh;
3 | }
4 |
--------------------------------------------------------------------------------
/frontend/src/app/utils/getNodeEnv.ts:
--------------------------------------------------------------------------------
1 | export default function getNodeEnv() {
2 | return process.env.NODE_ENV;
3 | }
4 |
--------------------------------------------------------------------------------
/frontend/src/img/usds-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/img/usds-logo.png
--------------------------------------------------------------------------------
/ops/services/pagerduty/_outputs.tf:
--------------------------------------------------------------------------------
1 | output "monitor_group_id" {
2 | value = azurerm_monitor_action_group.pd.id
3 | }
4 |
--------------------------------------------------------------------------------
/.env.sample:
--------------------------------------------------------------------------------
1 | # Smarty streets secrets
2 | SMARTY_AUTH_ID=
3 | SMARTY_AUTH_TOKEN=
4 |
5 | # Okta secrets
6 | OKTA_API_KEY=
7 |
--------------------------------------------------------------------------------
/backend/gradle.properties:
--------------------------------------------------------------------------------
1 | testDbHost=localhost
2 | testDbPort=5444
3 | skipDbSetup=false
4 | liquibaseTaskPrefix=liquibase
5 |
--------------------------------------------------------------------------------
/frontend/.env.test:
--------------------------------------------------------------------------------
1 | REACT_APP_BACKEND_URL=http://localhost:8080
2 | REACT_APP_TEST_TRIBAL_AFFILIATION_BYPASS=true
3 | TZ='UTC'
4 |
--------------------------------------------------------------------------------
/frontend/src/app/supportAdmin/Components/SeparatorLine.scss:
--------------------------------------------------------------------------------
1 | .sr-separator-line {
2 | border-bottom: 1px solid #dcdee0;
3 | }
4 |
--------------------------------------------------------------------------------
/frontend/src/app/universalReporting/TestDetailFormSubsection.scss:
--------------------------------------------------------------------------------
1 | .interpretation-textarea {
2 | height: 6rem !important;
3 | }
4 |
--------------------------------------------------------------------------------
/frontend/src/scss/components/_index.scss:
--------------------------------------------------------------------------------
1 | @forward "card";
2 | @forward "datepicker";
3 | @forward "link";
4 | @forward "table";
5 |
--------------------------------------------------------------------------------
/ops/services/frontend/outputs.tf:
--------------------------------------------------------------------------------
1 | output "blob_ip_address" {
2 | value = azurerm_storage_account.frontend.primary_web_host
3 | }
4 |
--------------------------------------------------------------------------------
/backend/src/test/resources/templates/test-template.html:
--------------------------------------------------------------------------------
1 |
2 | Foo: [[${foo}]]
3 | Bar: [[${bar}]]
4 |
5 |
--------------------------------------------------------------------------------
/frontend/src/img/favicons/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/img/favicons/favicon.ico
--------------------------------------------------------------------------------
/frontend/src/img/favicons/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/img/favicons/favicon.png
--------------------------------------------------------------------------------
/backend/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/backend/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/frontend/src/app/testQueue/test-timer.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/app/testQueue/test-timer.mp3
--------------------------------------------------------------------------------
/frontend/src/img/favicons/favicon-114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/img/favicons/favicon-114.png
--------------------------------------------------------------------------------
/frontend/src/img/favicons/favicon-144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/img/favicons/favicon-144.png
--------------------------------------------------------------------------------
/frontend/src/img/favicons/favicon-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/img/favicons/favicon-16.png
--------------------------------------------------------------------------------
/frontend/src/img/favicons/favicon-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/img/favicons/favicon-192.png
--------------------------------------------------------------------------------
/frontend/src/img/favicons/favicon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/img/favicons/favicon-40.png
--------------------------------------------------------------------------------
/frontend/src/img/favicons/favicon-57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/img/favicons/favicon-57.png
--------------------------------------------------------------------------------
/frontend/src/img/favicons/favicon-72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/img/favicons/favicon-72.png
--------------------------------------------------------------------------------
/frontend/src/patientApp/LanguageToggler.scss:
--------------------------------------------------------------------------------
1 | .sr-language-toggler {
2 | &.usa-button--unstyled {
3 | column-gap: 0;
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/frontend/src/scss/App.scss:
--------------------------------------------------------------------------------
1 | @forward "settings";
2 | @forward "@uswds/uswds/packages/uswds";
3 | @forward "base";
4 | @forward "components";
5 |
--------------------------------------------------------------------------------
/backend/src/main/resources/application-server-debug.yaml:
--------------------------------------------------------------------------------
1 | management.endpoints.web:
2 | exposure:
3 | include: health, info, auditlog, liquibase
4 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/update-org-settings.graphql:
--------------------------------------------------------------------------------
1 | mutation {
2 | updateOrganization(
3 | name: "dis organization"
4 | )
5 | }
--------------------------------------------------------------------------------
/ops/services/metabase/database/_var.tf:
--------------------------------------------------------------------------------
1 | variable "postgres_server_id" {
2 | type = string
3 | description = "PostgreSQL Server id"
4 | }
5 |
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Black.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Bold.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Bold.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Light.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Thin.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Thin.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Thin.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Thin.woff
--------------------------------------------------------------------------------
/frontend/src/scss/README.md:
--------------------------------------------------------------------------------
1 | # About
2 |
3 | All custom `.scss` go here. Everything in this folder is compiled into CSS and moved to the `src/styles` directory
4 |
--------------------------------------------------------------------------------
/ops/services/app_functions/test_data_publisher/functions/.funcignore:
--------------------------------------------------------------------------------
1 | *.js.map
2 | *.ts
3 | .git*
4 | .vscode
5 | local.settings.json
6 | test
7 | tsconfig.json
8 |
--------------------------------------------------------------------------------
/ops/services/web_application_firewall/_output.tf:
--------------------------------------------------------------------------------
1 | output "web_application_firewall_id" {
2 | value = azurerm_web_application_firewall_policy.sr_waf_policy.id
3 | }
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Black.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Black.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Black.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Black.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Bold.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Italic.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Italic.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Light.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Light.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Light.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Light.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Medium.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Medium.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Medium.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Regular.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Thin.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Thin.woff2
--------------------------------------------------------------------------------
/ops/services/okta-global/_data.tf:
--------------------------------------------------------------------------------
1 | data "okta_auth_server" "default" {
2 | name = "default"
3 | }
4 |
5 | data "okta_group" "everyone" {
6 | name = "Everyone"
7 | }
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/remove-from-queue.graphql:
--------------------------------------------------------------------------------
1 | mutation removePatientFromQueue($patientId: ID!) {
2 | removePatientFromQueue(patientId: $patientId)
3 | }
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-BoldItalic.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-ExtraBold.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-ExtraBold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-ExtraBold.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-ExtraLight.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Italic.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Medium.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Medium.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Regular.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-Regular.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-SemiBold.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-SemiBold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-SemiBold.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-SemiBold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-SemiBold.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-ThinItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-ThinItalic.ttf
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/specimen-type-query.graphql:
--------------------------------------------------------------------------------
1 | query getSpecimenTypes{
2 | specimenTypes {
3 | internalId
4 | name
5 | typeCode
6 | }
7 | }
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-BlackItalic.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-BlackItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-BlackItalic.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-BoldItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-BoldItalic.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-BoldItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-BoldItalic.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-ExtraBold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-ExtraBold.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-ExtraLight.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-ExtraLight.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-ExtraLight.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-ExtraLight.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-LightItalic.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-LightItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-LightItalic.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-MediumItalic.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-ThinItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-ThinItalic.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-ThinItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-ThinItalic.woff2
--------------------------------------------------------------------------------
/frontend/src/stories/__mocks__/appInsights.ts:
--------------------------------------------------------------------------------
1 | export const useAppInsightsContext = () => {};
2 | export const useTrackEvent = () => () => {};
3 | export class ReactPlugin {}
4 |
--------------------------------------------------------------------------------
/ops/global/_var.tf:
--------------------------------------------------------------------------------
1 | variable "okta_base_url" {
2 | description = "The Okta account domain. Default: okta.com"
3 | type = string
4 | default = "okta.com"
5 | }
6 |
--------------------------------------------------------------------------------
/ops/services/app_functions/report_stream_batched_publisher/functions/.funcignore:
--------------------------------------------------------------------------------
1 | *.js.map
2 | *.ts
3 | .git*
4 | .vscode
5 | local.settings.json
6 | test
7 | tsconfig.json
8 |
--------------------------------------------------------------------------------
/backend/lombok.config:
--------------------------------------------------------------------------------
1 | config.stopBubbling = true
2 | lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Qualifier
3 | lombok.addLombokGeneratedAnnotation = true
--------------------------------------------------------------------------------
/backend/src/main/resources/application-prod.yaml:
--------------------------------------------------------------------------------
1 | simple-report:
2 | cors:
3 | allowed-origins:
4 | - https://www.simplereport.gov
5 | - https://simplereport.gov
6 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/Page/__snapshots__/Page.test.tsx.snap:
--------------------------------------------------------------------------------
1 | // Jest Snapshot v1, https://goo.gl/fbAQLP
2 |
3 | exports[`Page No children renders 1`] = ``;
4 |
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-Black.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-Black.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-Black.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-Bold.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-Bold.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-Bold.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-Italic.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-Light.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-Light.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-Light.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-BlackItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-BlackItalic.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-LightItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-LightItalic.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-MediumItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-MediumItalic.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-MediumItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-MediumItalic.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-SemiBoldItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-SemiBoldItalic.woff
--------------------------------------------------------------------------------
/ops/global/_data.tf:
--------------------------------------------------------------------------------
1 | data "azurerm_resource_group" "rg" {
2 | name = "prime-simple-report-management"
3 | }
4 |
5 | data "okta_group" "everyone" {
6 | name = "Everyone"
7 | }
8 |
--------------------------------------------------------------------------------
/backend/db-setup/create-metabase-db.sh:
--------------------------------------------------------------------------------
1 |
2 | RESET_DIR=${LIB_DIR:-/usr/local/lib}
3 |
4 | psql -v ON_ERROR_STOP=1 -U "$POSTGRES_USER" metabase -f "$RESET_DIR/reset-metabase-db.sql"
5 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/devicetype/PublicDeviceType.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.devicetype;
2 |
3 | public interface PublicDeviceType {}
4 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/supported-disease-query.graphql:
--------------------------------------------------------------------------------
1 | query getSupportedDiseases {
2 | supportedDiseases {
3 | internalId
4 | name
5 | loinc
6 | }
7 | }
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-Black.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-Black.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-Italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-Italic.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-Italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-Italic.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-Light.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-Light.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-Regular.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-Regular.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-ExtraBoldItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-ExtraBoldItalic.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-ExtraBoldItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-ExtraBoldItalic.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-ExtraLightItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-ExtraLightItalic.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-SemiBoldItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-SemiBoldItalic.woff2
--------------------------------------------------------------------------------
/ops/services/app_gateway/_data.tf:
--------------------------------------------------------------------------------
1 | data "azurerm_key_vault_certificate" "wildcard_simplereport_gov" {
2 | key_vault_id = var.key_vault_id
3 | name = "new-sr-wildcard"
4 | }
5 |
--------------------------------------------------------------------------------
/ops/services/web_application_firewall/_var.tf:
--------------------------------------------------------------------------------
1 | variable "name" {}
2 | variable "env" {}
3 | variable "resource_group_name" {}
4 | variable "resource_group_location" {}
5 | variable "tags" {}
--------------------------------------------------------------------------------
/frontend/src/app/universalReporting/LabReportForm.scss:
--------------------------------------------------------------------------------
1 | .lab-combo-box {
2 | max-width: none !important;
3 | }
4 |
5 | .usa-form-group.report-form-controls {
6 | margin-top: 18px;
7 | }
8 |
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-BlackItalic.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-BoldItalic.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-BoldItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-BoldItalic.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-LightItalic.ttf
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-Regular.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/public-sans/PublicSans-ExtraLightItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/public-sans/PublicSans-ExtraLightItalic.woff2
--------------------------------------------------------------------------------
/frontend/mockServiceWorker.js:
--------------------------------------------------------------------------------
1 | import { setupWorker } from "msw/browser";
2 | import { handlers } from "frontend/src/stories/storyMocks";
3 |
4 | export const worker = setupWorker(...handlers);
5 |
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-BlackItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-BlackItalic.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-BlackItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-BlackItalic.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-BoldItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-BoldItalic.woff2
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-LightItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-LightItalic.woff
--------------------------------------------------------------------------------
/frontend/src/fonts/merriweather/Latin-Merriweather-LightItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDCgov/prime-simplereport/HEAD/frontend/src/fonts/merriweather/Latin-Merriweather-LightItalic.woff2
--------------------------------------------------------------------------------
/frontend/src/scss/components/_table.scss:
--------------------------------------------------------------------------------
1 | @use "../settings" as *;
2 |
3 | .usa-table {
4 | tr {
5 | &:hover {
6 | @include u-bg('gray-cool-3');
7 | }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/ops/services/pagerduty/_data.tf:
--------------------------------------------------------------------------------
1 | data "pagerduty_service" "service" {
2 | name = var.pagerduty_service_name
3 | }
4 |
5 | data "pagerduty_vendor" "azure" {
6 | name = "Microsoft Azure"
7 | }
8 |
--------------------------------------------------------------------------------
/backend/src/test/resources/deserialization/http-request-details/partial.json:
--------------------------------------------------------------------------------
1 | {
2 | "serverName":"my.private.cloud",
3 | "remoteAddress":"192.168.33.23",
4 | "requestUri":"/die/die/die"
5 | }
6 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/PhoneType.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | public enum PhoneType {
4 | MOBILE,
5 | LANDLINE;
6 | }
7 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/device-type-query.graphql:
--------------------------------------------------------------------------------
1 | query listDevices {
2 | deviceType {
3 | name
4 | internalId
5 | manufacturer
6 | model
7 | }
8 | }
--------------------------------------------------------------------------------
/cypress/fixtures/example.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Using fixtures to represent data",
3 | "email": "hello@cypress.io",
4 | "body": "Fixtures are a great way to mock data for responses to routes"
5 | }
6 |
--------------------------------------------------------------------------------
/cypress/utils/graphql-test-utils.js:
--------------------------------------------------------------------------------
1 | // Utility to match GraphQL mutation based on the operation name
2 | export const aliasGraphqlOperations = (req) => {
3 | req.alias = req.body.operationName;
4 | };
5 |
--------------------------------------------------------------------------------
/ops/dev5/metabase.tf:
--------------------------------------------------------------------------------
1 | module "metabase_database" {
2 | source = "../services/metabase/database"
3 |
4 | postgres_server_id = data.terraform_remote_state.persistent_dev5.outputs.postgres_server_id
5 | }
--------------------------------------------------------------------------------
/ops/dev6/metabase.tf:
--------------------------------------------------------------------------------
1 | module "metabase_database" {
2 | source = "../services/metabase/database"
3 |
4 | postgres_server_id = data.terraform_remote_state.persistent_dev6.outputs.postgres_server_id
5 | }
--------------------------------------------------------------------------------
/ops/demo/metabase.tf:
--------------------------------------------------------------------------------
1 | module "metabase_database" {
2 | source = "../services/metabase/database"
3 |
4 | postgres_server_id = data.terraform_remote_state.persistent_demo.outputs.postgres_server_id
5 | }
6 |
--------------------------------------------------------------------------------
/ops/services/okta-global/_var.tf:
--------------------------------------------------------------------------------
1 | variable "all_users_group_id" {
2 | description = "Group to include in universal Okta resources such as MFA rules"
3 | type = string
4 | sensitive = true
5 | }
6 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/CodingRecord.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | public record CodingRecord(String code, String displayName) {}
4 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/Pipeline.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | public enum Pipeline {
4 | COVID,
5 | UNIVERSAL,
6 | AIMS;
7 | }
8 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/patient-link-current-query.graphql:
--------------------------------------------------------------------------------
1 | query patientLinkCurrent($internalId: String!) {
2 | patientLinkCurrent(internalId: $internalId) {
3 | internalId
4 | }
5 | }
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/users-query.graphql:
--------------------------------------------------------------------------------
1 | query listUsers {
2 | users {
3 | id
4 | firstName
5 | middleName
6 | lastName
7 | suffix
8 | email
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/frontend/src/scss/components/_datepicker.scss:
--------------------------------------------------------------------------------
1 | @use "../settings" as *;
2 |
3 | .usa-date-picker__calendar {
4 | @include u-border(1px);
5 | @include u-border("base-lighter");
6 | @include u-shadow(2);
7 | }
8 |
--------------------------------------------------------------------------------
/ops/pentest/metabase.tf:
--------------------------------------------------------------------------------
1 | module "metabase_database" {
2 | source = "../services/metabase/database"
3 |
4 | postgres_server_id = data.terraform_remote_state.persistent_pentest.outputs.postgres_server_id
5 | }
6 |
--------------------------------------------------------------------------------
/ops/training/metabase.tf:
--------------------------------------------------------------------------------
1 | module "metabase_database" {
2 | source = "../services/metabase/database"
3 |
4 | postgres_server_id = data.terraform_remote_state.persistent_training.outputs.postgres_server_id
5 | }
6 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/update-feature-flag.graphql:
--------------------------------------------------------------------------------
1 | mutation updateFeatureFlag($name: String!, $value: Boolean!){
2 | updateFeatureFlag(name:$name, value: $value){
3 | name
4 | value
5 | }
6 | }
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/MenuButton.scss:
--------------------------------------------------------------------------------
1 | .rc-menu {
2 | padding: 0;
3 | top: 8px !important;
4 | }
5 |
6 | .rc-menu__item {
7 | padding: 16px 20px 11px 20px;
8 | margin-bottom: 5px;
9 | }
10 |
--------------------------------------------------------------------------------
/ops/services/okta-app/_output.tf:
--------------------------------------------------------------------------------
1 | output "client_id" {
2 | value = okta_app_oauth.app.client_id
3 | }
4 |
5 | output "client_secret" {
6 | value = okta_app_oauth.app.client_secret
7 | sensitive = true
8 | }
9 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/UploadStatus.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | public enum UploadStatus {
4 | PENDING,
5 | SUCCESS,
6 | FAILURE
7 | }
8 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/deleted-person-query.graphql:
--------------------------------------------------------------------------------
1 | query getDeletedPatients {
2 | patients(archivedStatus: ARCHIVED) {
3 | firstName
4 | lastName
5 | birthDate
6 | telephone
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/update-user-role.graphql:
--------------------------------------------------------------------------------
1 | mutation updateUserRole(
2 | $id: ID!,
3 | $role: Role!,
4 | ){
5 | updateUserRole(
6 | id: $id
7 | role: $role
8 | )
9 | }
10 |
--------------------------------------------------------------------------------
/frontend/src/app/facilitySelect/FacilitySelect.scss:
--------------------------------------------------------------------------------
1 | #facility-select {
2 | height: 100vh;
3 |
4 | .card-container {
5 | max-width: 25rem;
6 | margin: 0 auto;
7 | margin-top: 3.125rem;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/frontend/src/app/testResults/uploads/Uploads.scss:
--------------------------------------------------------------------------------
1 | .sr-test-results-uploads {
2 | .usa-process-list__heading {
3 | font-size: 1.17rem;
4 | }
5 |
6 | mark {
7 | background-color: #f0f0f0;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/ops/services/app_functions/test_data_publisher/functions/jest.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
2 | module.exports = {
3 | preset: "ts-jest",
4 | testEnvironment: "node",
5 | };
6 |
--------------------------------------------------------------------------------
/ops/services/okta-app/_config.tf:
--------------------------------------------------------------------------------
1 | terraform {
2 | required_providers {
3 | okta = {
4 | source = "okta/okta"
5 | version = "~> 4.3.0"
6 | }
7 | }
8 | required_version = "~> 1.9.6"
9 | }
10 |
--------------------------------------------------------------------------------
/ops/services/okta-global/_config.tf:
--------------------------------------------------------------------------------
1 | terraform {
2 | required_providers {
3 | okta = {
4 | source = "okta/okta"
5 | version = "~> 4.3.0"
6 | }
7 | }
8 | required_version = "~> 1.9.6"
9 | }
10 |
--------------------------------------------------------------------------------
/backend/docker-compose.prod.yml:
--------------------------------------------------------------------------------
1 | version: "3.2"
2 | services:
3 | api:
4 | build:
5 | context: ..
6 | dockerfile: backend/Dockerfile.prod
7 | image: simple-report-api-build
8 | ports:
9 | - "8080:8080"
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/ArchivedStatus.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | public enum ArchivedStatus {
4 | ALL,
5 | ARCHIVED,
6 | UNARCHIVED,
7 | }
8 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/OrderStatus.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | public enum OrderStatus {
4 | PENDING,
5 | COMPLETED,
6 | CANCELED;
7 | }
8 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/TestResult.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | public enum TestResult {
4 | POSITIVE,
5 | NEGATIVE,
6 | UNDETERMINED;
7 | }
8 |
--------------------------------------------------------------------------------
/frontend/src/app/Settings/Users/FacilityAccessTab.scss:
--------------------------------------------------------------------------------
1 | .userrole-subtext {
2 | font-style: italic;
3 | font-weight: normal;
4 | font-size: 16px;
5 | line-height: 120%;
6 | color: #3d4551;
7 | margin-right: 2rem;
8 | }
9 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/Optional.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const Optional = (props: { label?: React.ReactNode; className?: string }) => (
4 | <>{props.label}>
5 | );
6 |
7 | export default Optional;
8 |
--------------------------------------------------------------------------------
/frontend/src/app/testQueue/TestCardForm/diseaseSpecificComponents/TestResultInputGroup.scss:
--------------------------------------------------------------------------------
1 | .test-result-input-radio-group-column {
2 | margin-right: 1.75rem;
3 | }
4 |
5 | .usa-radio {
6 | margin-bottom: 0 !important;
7 | }
8 |
--------------------------------------------------------------------------------
/frontend/src/react-i18next.d.ts:
--------------------------------------------------------------------------------
1 | import { resources } from "./i18n";
2 |
3 | declare module "react-i18next" {
4 | type DefaultResources = (typeof resources)["en"];
5 | interface Resources extends DefaultResources {}
6 | }
7 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/OptionalBoolean.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | public enum OptionalBoolean {
4 | YES,
5 | NO,
6 | WOULD_NOT_SPECIFY;
7 | }
8 |
--------------------------------------------------------------------------------
/frontend/src/app/utils/getNodeEnv.test.ts:
--------------------------------------------------------------------------------
1 | import getNodeEnv from "./getNodeEnv";
2 |
3 | describe("getNodeEnv", () => {
4 | it("returns the node env", () => {
5 | expect(getNodeEnv()).toEqual(process.env.NODE_ENV);
6 | });
7 | });
8 |
--------------------------------------------------------------------------------
/frontend/src/index.tsx:
--------------------------------------------------------------------------------
1 | import { createRoot } from "react-dom/client";
2 |
3 | import { ReactApp } from "./App";
4 |
5 | const rootElement = document.getElementById("root");
6 | createRoot(rootElement as Element).render();
7 |
--------------------------------------------------------------------------------
/ops/services/metabase/database/main.tf:
--------------------------------------------------------------------------------
1 | resource "azurerm_postgresql_flexible_server_database" "metabase" {
2 | charset = "UTF8"
3 | collation = "en_US.utf8"
4 | name = "metabase"
5 | server_id = var.postgres_server_id
6 | }
7 |
--------------------------------------------------------------------------------
/ops/services/metabase/service/_output.tf:
--------------------------------------------------------------------------------
1 | output "app_hostname" {
2 | value = azurerm_linux_web_app.metabase.default_hostname
3 | }
4 |
5 | output "azurerm_linux_web_app_metabase_id" {
6 | value = azurerm_linux_web_app.metabase.id
7 | }
--------------------------------------------------------------------------------
/ops/services/pagerduty/_config.tf:
--------------------------------------------------------------------------------
1 | terraform {
2 | required_providers {
3 | pagerduty = {
4 | source = "pagerduty/pagerduty"
5 | version = "~> 2.14"
6 | }
7 | }
8 | required_version = "~> 1.9.6"
9 | }
10 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/DataHubUploadStatus.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | public enum DataHubUploadStatus {
4 | IN_PROGRESS,
5 | SUCCESS,
6 | FAIL;
7 | }
8 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/ResultUploadErrorSource.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | public enum ResultUploadErrorSource {
4 | REPORT_STREAM,
5 | SIMPLE_REPORT,
6 | }
7 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/SnomedConceptRecord.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | public record SnomedConceptRecord(String name, String code, TestResult displayName) {}
4 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/TestCorrectionStatus.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | public enum TestCorrectionStatus {
4 | ORIGINAL,
5 | CORRECTED,
6 | REMOVED;
7 | }
8 |
--------------------------------------------------------------------------------
/backend/src/test/resources/deserialization/graphql-inputs/full.json:
--------------------------------------------------------------------------------
1 | {
2 | "operationName" : "thoracotomy",
3 | "query": "what is this thing called love?",
4 | "variables": {
5 | "eenie": 1,
6 | "meeney": 3,
7 | "miney": "Moe"
8 | }
9 | }
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/facility-stats-query.graphql:
--------------------------------------------------------------------------------
1 | query GetFacilityStats($facilityId: ID!) {
2 | facilityStats(facilityId: $facilityId){
3 | usersSingleAccessCount
4 | patientsSingleAccessCount
5 | }
6 | }
--------------------------------------------------------------------------------
/frontend/src/app/__snapshots__/PilotApp.test.tsx.snap:
--------------------------------------------------------------------------------
1 | // Jest Snapshot v1, https://goo.gl/fbAQLP
2 |
3 | exports[`App should show error UI 1`] = `
4 |
5 |
6 | Server connection error...
7 |
8 |
9 | `;
10 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/facilities-query.graphql:
--------------------------------------------------------------------------------
1 | query GetFacilities(
2 | $showArchived: Boolean
3 | ) {
4 | facilities(
5 | showArchived: $showArchived
6 | ) {
7 | id
8 | name
9 | isDeleted
10 | }
11 | }
--------------------------------------------------------------------------------
/frontend/src/app/__snapshots__/ReportingApp.test.tsx.snap:
--------------------------------------------------------------------------------
1 | // Jest Snapshot v1, https://goo.gl/fbAQLP
2 |
3 | exports[`App should show error UI 1`] = `
4 |
5 |
6 | Server connection error...
7 |
8 |
9 | `;
10 |
--------------------------------------------------------------------------------
/ops/services/app_gateway/_output.tf:
--------------------------------------------------------------------------------
1 | output "app_gateway_hostname" {
2 | value = azurerm_application_gateway.load_balancer
3 | sensitive = true
4 | }
5 |
6 | output "app_gateway_public_ip" {
7 | value = azurerm_public_ip.static_gateway.id
8 | }
--------------------------------------------------------------------------------
/ops/services/basic_vm/_var.tf:
--------------------------------------------------------------------------------
1 | variable "name" {}
2 | variable "env" {}
3 | variable "resource_group_name" {}
4 | variable "resource_group_location" {}
5 | variable "tags" {}
6 |
7 | variable "subnet_id" {}
8 | variable "bastion_connect_password" {}
9 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/patient-link-verify-query.graphql:
--------------------------------------------------------------------------------
1 | query patientLinkVerify($internalId: String!, $birthDate: LocalDate!) {
2 | patientLinkVerify(internalId: $internalId, birthDate: $birthDate) {
3 | internalId
4 | }
5 | }
--------------------------------------------------------------------------------
/frontend/.stylelintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "stylelint-config-standard"
4 | ],
5 | "rules": {
6 | "at-rule-no-unknown": null,
7 | "declaration-empty-line-before": null,
8 | "no-descending-specificity": null
9 | }
10 | }
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/universalreporting/ResultScaleType.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.universalreporting;
2 |
3 | public enum ResultScaleType {
4 | QUANTITATIVE,
5 | ORDINAL,
6 | NOMINAL,
7 | }
8 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/TestResultDeliveryPreference.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | public enum TestResultDeliveryPreference {
4 | SMS,
5 | NONE,
6 | EMAIL,
7 | ALL;
8 | }
9 |
--------------------------------------------------------------------------------
/frontend/.env.production:
--------------------------------------------------------------------------------
1 | PUBLIC_URL=/app/
2 | REACT_APP_BASE_URL=https://${DEPLOY_ENV}.simplereport.gov
3 | REACT_APP_BACKEND_URL=${REACT_APP_BASE_URL}/api
4 | REACT_APP_OKTA_SCOPE=simple_report_${DEPLOY_ENV}
5 | REACT_APP_OKTA_TOKEN_ROLE_CLAIM=${DEPLOY_ENV}_roles
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/ActionsMenu.scss:
--------------------------------------------------------------------------------
1 | .sr-actions-menu {
2 | color: #005ea2;
3 | background: inherit;
4 | padding: 0;
5 | border: 0;
6 | }
7 |
8 | .sr-menu-item {
9 | margin-top: 0.25em;
10 | margin-bottom: 0.25em;
11 | }
12 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/PersonRole.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | public enum PersonRole {
4 | STAFF,
5 | RESIDENT,
6 | STUDENT,
7 | VISITOR,
8 | UNKNOWN;
9 | }
10 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/service/supportescalation/SupportEscalationService.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.service.supportescalation;
2 |
3 | public interface SupportEscalationService {
4 | boolean sendEscalationMessage();
5 | }
6 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/update-user-email.graphql:
--------------------------------------------------------------------------------
1 | mutation updateUserEmail(
2 | $id: ID!
3 | $email: String
4 | ) {
5 | updateUserEmail(
6 | id: $id
7 | email: $email
8 | ) {
9 | id
10 | email
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/frontend/src/img/close.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/MaintenanceBanner.scss:
--------------------------------------------------------------------------------
1 | @use "../../scss/settings";
2 |
3 | .maintenance-alert-background {
4 | background-color: #9c3d10;
5 | }
6 |
7 | .maintenance-alert-body {
8 | max-width: settings.$site-max-width !important;
9 | }
10 |
--------------------------------------------------------------------------------
/ops/services/app_functions/report_stream_batched_publisher/infra/_output.tf:
--------------------------------------------------------------------------------
1 | output "azurerm_service_plan_asp_id" {
2 | value = azurerm_service_plan.asp.id
3 | }
4 |
5 | output "azurerm_linux_function_app_id" {
6 | value = azurerm_linux_function_app.functions.id
7 | }
--------------------------------------------------------------------------------
/ops/services/app_functions/test_data_publisher/infra/_config.tf:
--------------------------------------------------------------------------------
1 | terraform {
2 | required_providers {
3 | azurerm = {
4 | source = "hashicorp/azurerm"
5 | version = "~> 3.100.0"
6 | }
7 | }
8 | required_version = "~> 1.9.6"
9 | }
10 |
--------------------------------------------------------------------------------
/ops/services/container_instances/db_client/image/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: "3.2"
2 | services:
3 |
4 | dbclient:
5 | build:
6 | context: .
7 | dockerfile: Dockerfile
8 | image: simple-report-db-client
9 | ports:
10 | - "5432:5432"
--------------------------------------------------------------------------------
/backend/db-setup/reset-metabase-db.sql:
--------------------------------------------------------------------------------
1 | DROP SCHEMA IF EXISTS public CASCADE;
2 |
3 | CREATE SCHEMA IF NOT EXISTS public;
4 | GRANT ALL ON SCHEMA public TO postgres;
5 | GRANT ALL ON SCHEMA public TO public;
6 | GRANT ALL PRIVILEGES ON SCHEMA public TO simple_report_migrations;
--------------------------------------------------------------------------------
/frontend/src/app/testQueue/TestQueue.scss:
--------------------------------------------------------------------------------
1 | @use "../../scss/settings";
2 |
3 | .grid-container.queue-container-wide {
4 | max-width: settings.$site-max-width;
5 | }
6 |
7 | .prime-test-result {
8 | .usa-radio {
9 | white-space: nowrap;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/backend/db-setup/migrate-devices.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | here=$(dirname $BASH_SOURCE)
3 | export PGPASSFILE=${here}/.pgpass
4 | chmod 0600 $PGPASSFILE # git always botches this up
5 | psql -h localhost -p ${SR_DB_PORT:-5432} simple_report -U postgres -f ${here}/migrate-devices.sql
6 |
--------------------------------------------------------------------------------
/backend/db-setup/nuke-db.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | here=$(dirname $BASH_SOURCE)
3 | export PGPASSFILE=${here}/.pgpass
4 | chmod 0600 $PGPASSFILE # git always botches this up
5 | psql -h ${SR_DB_HOST:-localhost} -p ${SR_DB_PORT:-5432} simple_report -U postgres -f ${here}/reset-db.sql
6 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/service/sms/SmsProviderWrapper.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.service.sms;
2 |
3 | import com.twilio.type.PhoneNumber;
4 |
5 | public interface SmsProviderWrapper {
6 | String send(PhoneNumber to, String message);
7 | }
8 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/org-links-query.graphql:
--------------------------------------------------------------------------------
1 | query OrgLinks {
2 | whoami {
3 | organization {
4 | patientSelfRegistrationLink
5 | facilities {
6 | name
7 | patientSelfRegistrationLink
8 | }
9 | }
10 | }
11 | }
--------------------------------------------------------------------------------
/cypress/.env.e2e.sample:
--------------------------------------------------------------------------------
1 | # Cypress secrets
2 | CYPRESS_OKTA_USERNAME=
3 | CYPRESS_OKTA_PASSWORD=
4 | CYPRESS_OKTA_SECRET=
5 |
6 | # Smarty streets secrets
7 | SMARTY_AUTH_ID=
8 | SMARTY_AUTH_TOKEN=
9 |
10 | # Backend url for manual http requests
11 | CYPRESS_BACKEND_URL=
--------------------------------------------------------------------------------
/ops/services/app_functions/report_stream_batched_publisher/infra/_config.tf:
--------------------------------------------------------------------------------
1 | terraform {
2 | required_providers {
3 | azurerm = {
4 | source = "hashicorp/azurerm"
5 | version = "~> 3.100.0"
6 | }
7 | }
8 | required_version = "~> 1.9.6"
9 | }
10 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/service/model/Wrapper.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.service.model;
2 |
3 | /** Base interface for wrapper objects, to allow consistent mixin/facet design. */
4 | public interface Wrapper {
5 |
6 | T getWrapped();
7 | }
8 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/USAGovBanner.scss:
--------------------------------------------------------------------------------
1 | @use "../../scss/settings";
2 |
3 | @media print {
4 | .usa-banner {
5 | display: none;
6 | }
7 | }
8 |
9 | .usa-banner {
10 | .usa-banner__inner {
11 | max-width: settings.$site-max-width;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/frontend/src/app/testQueue/TestCardForm/TestCardForm.scss:
--------------------------------------------------------------------------------
1 | .no-left-border {
2 | border-left-width: 0 !important;
3 | padding-left: 0 !important;
4 | }
5 |
6 | .sr-test-card-form-container {
7 | .usa-label,
8 | .usa-legend {
9 | max-width: none;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/errors/DryRunException.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.errors;
2 |
3 | public class DryRunException extends RuntimeException {
4 | public DryRunException(String message) {
5 | super(message);
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/ResultUploadErrorType.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | public enum ResultUploadErrorType {
4 | MISSING_HEADER,
5 | INVALID_DATA,
6 | MISSING_DATA,
7 | UNAVAILABLE_DISEASE
8 | }
9 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/device-type-add.graphql:
--------------------------------------------------------------------------------
1 | mutation addDevice(
2 | $input: CreateDeviceType!
3 | ) {
4 | createDeviceType(
5 | input: $input
6 | ) {
7 | internalId
8 | name
9 | model
10 | manufacturer
11 | }
12 | }
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/get-pending-organizations.graphql:
--------------------------------------------------------------------------------
1 | query getPendingOrganizations {
2 | pendingOrganizations {
3 | externalId
4 | name
5 | adminFirstName
6 | adminLastName
7 | adminEmail
8 | adminPhone
9 | createdAt
10 | }
11 | }
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/update-facility-feature-flag.graphql:
--------------------------------------------------------------------------------
1 | mutation updateFacilityFeatureFlag($facilityId: ID!, $name: String!, $value: Boolean!){
2 | updateFacilityFeatureFlag(facilityId: $facilityId, name: $name, value: $value){
3 | name
4 | value
5 | }
6 | }
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/ScrollToTopOnMount.tsx:
--------------------------------------------------------------------------------
1 | import { useEffect } from "react";
2 |
3 | function ScrollToTopOnMount() {
4 | useEffect(() => {
5 | window.scrollTo(0, 0);
6 | }, []);
7 |
8 | return null;
9 | }
10 |
11 | export default ScrollToTopOnMount;
12 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/repository/ProviderRepository.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.repository;
2 |
3 | import gov.cdc.usds.simplereport.db.model.Provider;
4 |
5 | public interface ProviderRepository extends EternalAuditedEntityRepository {}
6 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/device-type-update.graphql:
--------------------------------------------------------------------------------
1 | mutation updateDevice(
2 | $input: UpdateDeviceType!
3 | ) {
4 | updateDeviceType(
5 | input: $input
6 | ) {
7 | internalId
8 | name
9 | model
10 | manufacturer
11 | }
12 | }
--------------------------------------------------------------------------------
/backend/src/test/resources/requests/organizationAccountRequest.json:
--------------------------------------------------------------------------------
1 | {
2 | "firstName": "Betty",
3 | "lastName": "Edwards",
4 | "email": "betty@mailinator.com",
5 | "workPhoneNumber": "+1 (969) 768-2863",
6 | "state": "TX",
7 | "name": "DFW",
8 | "type": "airport/Transit Station"
9 | }
--------------------------------------------------------------------------------
/frontend/src/app/utils/email.ts:
--------------------------------------------------------------------------------
1 | // email utils
2 | export const emailIsValid = (emailAddress = "") => {
3 | return emailRegex.test(String(emailAddress).toLowerCase());
4 | };
5 |
6 | export const emailRegex =
7 | /^[a-zA-Z0-9_+&*-]+(?:\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}$/;
8 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/HL7BatchMessage.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | import java.util.HashMap;
4 |
5 | public record HL7BatchMessage(
6 | String message, int recordsCount, HashMap reportedDiseases) {}
7 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/service/email/EmailProvider.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.service.email;
2 |
3 | import com.sendgrid.helpers.mail.Mail;
4 | import java.io.IOException;
5 |
6 | public interface EmailProvider {
7 | String send(Mail mail) throws IOException;
8 | }
9 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/FHIRBundleRecord.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | import java.util.HashMap;
4 | import java.util.List;
5 |
6 | public record FHIRBundleRecord(List serializedBundle, HashMap metadata) {}
7 |
--------------------------------------------------------------------------------
/ops/services/okta-app/_data.tf:
--------------------------------------------------------------------------------
1 | data "okta_default_policy" "signon" {
2 | type = "OKTA_SIGN_ON"
3 | }
4 |
5 | // Link the CDC/USDS users to the application
6 | data "okta_group" "cdc_users" {
7 | name = "Prime Team Members"
8 | }
9 |
10 | data "okta_auth_server" "default" {
11 | name = "default"
12 | }
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/set-organization-identity-verified.graphql:
--------------------------------------------------------------------------------
1 | mutation setOrganizationIdentityVerified(
2 | $externalId: String!,
3 | $verified: Boolean!,
4 | ){
5 | setOrganizationIdentityVerified(
6 | externalId: $externalId
7 | verified: $verified
8 | )
9 | }
10 |
--------------------------------------------------------------------------------
/ops/services/postgres_db/_output.tf:
--------------------------------------------------------------------------------
1 | output "server_name" {
2 | value = azurerm_postgresql_flexible_server.db.name
3 | }
4 |
5 | output "server_id" {
6 | value = azurerm_postgresql_flexible_server.db.id
7 | }
8 |
9 | output "server_fqdn" {
10 | value = azurerm_postgresql_flexible_server.db.fqdn
11 | }
12 |
--------------------------------------------------------------------------------
/backend/src/main/resources/application-okta-prod.yaml:
--------------------------------------------------------------------------------
1 | # Bean profile to be included in deployment-specific profiles
2 | # for PRODUCTION ONLY.
3 | okta:
4 | oauth2:
5 | client-id: 0oa5ahrdfSpxmNZO74h6
6 | simple-report:
7 | authorization:
8 | role-claim: prod_roles
9 | environment-name: "PROD"
10 |
--------------------------------------------------------------------------------
/backend/src/main/resources/application-okta-stg.yaml:
--------------------------------------------------------------------------------
1 | # Bean profile to be included in deployment-specific profiles
2 | # for STAGING deployments.
3 | okta:
4 | oauth2:
5 | client-id: 0oa62qncijWSeQMuc4h6
6 | simple-report:
7 | authorization:
8 | role-claim: stg_roles
9 | environment-name: "STG"
10 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/dashboard-metrics.graphql:
--------------------------------------------------------------------------------
1 | query GetTopLevelDashboardMetrics($facilityId: ID, $startDate: DateTime!, $endDate: DateTime!) {
2 | topLevelDashboardMetrics(facilityId: $facilityId, startDate: $startDate, endDate: $endDate) {
3 | positiveTestCount
4 | totalTestCount
5 | }
6 | }
--------------------------------------------------------------------------------
/frontend/codegen.yml:
--------------------------------------------------------------------------------
1 | overwrite: true
2 | schema: "../backend/src/main/resources/graphql/*.graphqls"
3 | documents: "./src/app/**/*.{ts,tsx,graphql}"
4 | generates:
5 | src/generated/graphql.tsx:
6 | plugins:
7 | - "typescript"
8 | - "typescript-operations"
9 | - "typescript-react-apollo"
10 |
--------------------------------------------------------------------------------
/backend/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
4 | networkTimeout=10000
5 | validateDistributionUrl=true
6 | zipStoreBase=GRADLE_USER_HOME
7 | zipStorePath=wrapper/dists
8 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/service/model/ExistingPatientCheckRequestBody.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.service.model;
2 |
3 | import java.time.LocalDate;
4 |
5 | public record ExistingPatientCheckRequestBody(
6 | String firstName, String lastName, LocalDate birthDate, String postalCode) {}
7 |
--------------------------------------------------------------------------------
/frontend/src/scss/components/_link.scss:
--------------------------------------------------------------------------------
1 | @use "../settings" as *;
2 | @use "@uswds/uswds/packages/usa-link";
3 |
4 | .sr-link__primary {
5 | @extend .usa-link;
6 |
7 | @include u-text('semibold');
8 | @include u-text('no-underline');
9 |
10 | &:hover {
11 | @include u-text('underline');
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/frontend/src/app/universalReporting/ReviewFormSection.scss:
--------------------------------------------------------------------------------
1 | .review-form {
2 | table,
3 | th,
4 | td {
5 | border-top: none !important;
6 | border-bottom: 1px solid #dfe1e2 !important;
7 | line-height: 1;
8 | }
9 |
10 | td:first-child {
11 | width: 18rem;
12 | padding-left: 0;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/Eternal.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model;
2 |
3 | /** Marker interface for an entity that gets soft-deleted when it is "destroyed". */
4 | public interface Eternal {
5 |
6 | boolean getIsDeleted();
7 |
8 | void setIsDeleted(boolean deleted);
9 | }
10 |
--------------------------------------------------------------------------------
/backend/src/main/resources/application-okta-training.yaml:
--------------------------------------------------------------------------------
1 | # Bean profile to be included in deployment-specific profiles
2 | # for PENTEST deployments.
3 | okta:
4 | oauth2:
5 | client-id: 0oa75lmsiCml0JCCQ4h6
6 | simple-report:
7 | authorization:
8 | role-claim: training_roles
9 | environment-name: "TRAINING"
10 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/repository/UploadDiseaseDetailsRepository.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.repository;
2 |
3 | import gov.cdc.usds.simplereport.db.model.UploadDiseaseDetails;
4 |
5 | public interface UploadDiseaseDetailsRepository
6 | extends AuditedEntityRepository {}
7 |
--------------------------------------------------------------------------------
/frontend/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /build
3 | /src/styles/*
4 | /.env.local
5 | /.env.*.local
6 | .eslintcache
7 | yarn-error.log
8 | coverage
9 | geckodriver.log
10 | chromedriver.log
11 | tests_output/
12 | storybook-static
13 | build-storybook.log
14 | /storybook_public
15 | maintenance.json
16 | diff.txt
17 |
18 | wiremock*.jar
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/LabeledText.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const LabeledText = (props: {
4 | label: string;
5 | text?: string | null;
6 | }): React.ReactElement => (
7 | <>
8 | {props.label}
9 | {props.text}
10 | >
11 | );
12 |
13 | export default LabeledText;
14 |
--------------------------------------------------------------------------------
/frontend/src/app/testResults/HeaderSizeFix.scss:
--------------------------------------------------------------------------------
1 | .header-size-fix {
2 | h1 {
3 | font-size: 24px;
4 | }
5 |
6 | h2 {
7 | font-size: 18.75px;
8 | }
9 |
10 | h3 {
11 | font-size: 16px;
12 | }
13 |
14 | h4 {
15 | font-size: 13.28px;
16 | }
17 |
18 | h5 {
19 | font-size: 10.72px;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/ops/services/nat_gateway/_var.tf:
--------------------------------------------------------------------------------
1 | variable "name" {}
2 | variable "env" {}
3 | variable "resource_group_name" {}
4 | variable "resource_group_location" {}
5 | variable "tags" {}
6 | variable "subnet_webapp_id" {}
7 | variable "subnet_lb_id" {}
8 |
9 | variable "zones" {
10 | type = list(string)
11 | default = ["1", "2", "3"]
12 | }
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/reset-user-mfa.graphql:
--------------------------------------------------------------------------------
1 | mutation resetUserMfa (
2 | $id: ID!
3 | ){
4 | resetUserMfa(
5 | id: $id
6 | ) {
7 | id
8 | firstName,
9 | lastName,
10 | email,
11 | organization {
12 | name
13 | externalId
14 | }
15 | }
16 | }
17 |
18 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/CopyTooltip.tsx:
--------------------------------------------------------------------------------
1 | const CopyTooltip = () => {
2 | return (
3 |
7 | Copied!
8 |
9 | );
10 | };
11 |
12 | export default CopyTooltip;
13 |
--------------------------------------------------------------------------------
/backend/src/test/resources/patientBulkUpload/validRequiredOnly.csv:
--------------------------------------------------------------------------------
1 | last_name,first_name,race,date_of_birth,biological_sex,ethnicity,street,state,zip_code,phone_number,phone_number_type,employed_in_healthcare,resident_congregate_setting
2 | Doe,Jane,black or african american,01/01/90,female,Not Hispanic or Latino,1 main st,AK,99551,410-867-5309,mobile,Y,n
--------------------------------------------------------------------------------
/frontend/src/app/patients/TestResultDeliveryPreference.ts:
--------------------------------------------------------------------------------
1 | export const TestResultDeliveryPreferences = {
2 | SMS: "SMS",
3 | EMAIL: "EMAIL",
4 | NONE: "NONE",
5 | ALL: "ALL",
6 | } as const;
7 |
8 | export type TestResultDeliveryPreference =
9 | (typeof TestResultDeliveryPreferences)[keyof typeof TestResultDeliveryPreferences];
10 |
--------------------------------------------------------------------------------
/ops/global/acr.tf:
--------------------------------------------------------------------------------
1 | resource "azurerm_container_registry" "sr" {
2 | location = data.azurerm_resource_group.rg.location
3 | name = "simplereportacr"
4 | resource_group_name = data.azurerm_resource_group.rg.name
5 | sku = "Standard"
6 | admin_enabled = true
7 |
8 | tags = local.management_tags
9 | }
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/FacilityStats.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model;
2 |
3 | import lombok.Builder;
4 | import lombok.Getter;
5 |
6 | @Getter
7 | @Builder
8 | public class FacilityStats {
9 | private Integer usersSingleAccessCount;
10 | private Integer patientsSingleAccessCount;
11 | }
12 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/accountrequest/AccountResponse.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.accountrequest;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 |
6 | @AllArgsConstructor
7 | @Getter
8 | public class AccountResponse {
9 | private final String orgExternalId;
10 | }
11 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/service/model/TimezoneInfo.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.service.model;
2 |
3 | import lombok.Builder;
4 |
5 | @Builder
6 | public class TimezoneInfo {
7 | public final String timezoneCommonName;
8 | public final int utcOffset;
9 | public final boolean obeysDaylightSavings;
10 | }
11 |
--------------------------------------------------------------------------------
/frontend/src/app/analytics/TouchpointsButton.tsx:
--------------------------------------------------------------------------------
1 | import "./TouchpointsButton.scss";
2 |
3 | const TouchpointsButton: React.FC = () => {
4 | return (
5 |
8 | );
9 | };
10 |
11 | export default TouchpointsButton;
12 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/Required.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const Required = (props: { label?: React.ReactNode }) => (
4 | <>
5 | {props.label}
6 |
7 | {props.label && " "}*
8 |
9 | >
10 | );
11 |
12 | export default Required;
13 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/LocatedEntity.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model;
2 |
3 | import gov.cdc.usds.simplereport.db.model.auxiliary.StreetAddress;
4 |
5 | /** Marker interface for an entity that has a street address */
6 | public interface LocatedEntity {
7 |
8 | StreetAddress getAddress();
9 | }
10 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/PersonEntity.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model;
2 |
3 | import gov.cdc.usds.simplereport.db.model.auxiliary.PersonName;
4 |
5 | /** Marker interface for entities that represent a person with a name. */
6 | public interface PersonEntity {
7 |
8 | PersonName getNameInfo();
9 | }
10 |
--------------------------------------------------------------------------------
/backend/src/test/resources/deserialization/http-request-details/full.json:
--------------------------------------------------------------------------------
1 | {
2 | "serverName":"my.private.cloud",
3 | "remoteAddress":"192.168.33.23",
4 | "forwardedAddresses":["192.168.251.2:80","10.240.32.158:443", "127.138.220.0:80"],
5 | "forwardedProtocol":"gopher",
6 | "originalHostName":"simplereport.int",
7 | "requestUri":"/die/die/die"
8 | }
9 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/reset-user-password.graphql:
--------------------------------------------------------------------------------
1 | mutation resetUserPassword (
2 | $id: ID!
3 | ){
4 | resetUserPassword(
5 | id: $id
6 | ) {
7 | id
8 | firstName,
9 | lastName,
10 | email,
11 | organization {
12 | name
13 | externalId
14 | }
15 | }
16 | }
17 |
18 |
--------------------------------------------------------------------------------
/frontend/src/app/testQueue/addToQueue/types.ts:
--------------------------------------------------------------------------------
1 | import { PregnancyCode } from "../../../patientApp/timeOfTest/constants";
2 |
3 | export interface AoEAnswersDelivery {
4 | noSymptoms: boolean;
5 | symptoms: string;
6 | symptomOnset: ISODate | null | undefined;
7 | pregnancy: PregnancyCode | undefined;
8 | testResultDelivery: string;
9 | }
10 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/accountrequest/OrganizationAccountResponse.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.accountrequest;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 |
6 | @AllArgsConstructor
7 | @Getter
8 | public class OrganizationAccountResponse {
9 | String orgExternalId;
10 | }
11 |
--------------------------------------------------------------------------------
/backend/db-setup/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM postgres:14.19-alpine3.22
2 |
3 | RUN apk add py3-pip postgresql-libs gcc musl-dev postgresql-dev make
4 | COPY ./requirements.txt /usr/local/lib/requirements.txt
5 | COPY ./generate_db_data.py /usr/local/lib/generate_db_data.py
6 | RUN pip3 install -r /usr/local/lib/requirements.txt --break-system-packages
7 | WORKDIR /usr/local/lib/
8 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/resend-activation-email.graphql:
--------------------------------------------------------------------------------
1 | mutation resendActivationEmail (
2 | $id: ID!
3 | ){
4 | resendActivationEmail(
5 | id: $id
6 | ) {
7 | id
8 | firstName,
9 | lastName,
10 | email,
11 | organization {
12 | name
13 | externalId
14 | }
15 | }
16 | }
17 |
18 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/USAGovBanner.stories.tsx:
--------------------------------------------------------------------------------
1 | import { Meta } from "@storybook/react-webpack5";
2 |
3 | import USAGovBanner from "./USAGovBanner";
4 |
5 | export default {
6 | title: "Components/USA Gov Banner",
7 | component: USAGovBanner,
8 | } as Meta;
9 |
10 | export const Default: React.VFC<{}> = (args) => ;
11 |
--------------------------------------------------------------------------------
/backend/db-setup/snapshot-db.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | here=$(dirname $BASH_SOURCE)
4 | export PGPASSFILE=${here}/.pgpass
5 | chmod 0600 $PGPASSFILE # git always botches this up
6 | mkdir -p ${here}/snapshots
7 |
8 | pg_dump -h ${SR_DB_HOST:-localhost} -p ${SR_DB_PORT:-5432} simple_report -U postgres -f ${here}/snapshots/${SR_DB_HOST:-localhost}-$(date +%Y-%m-%dT%H%M%S).sql
9 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/TopLevelDashboardMetrics.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 |
6 | @AllArgsConstructor
7 | @Getter
8 | public class TopLevelDashboardMetrics {
9 | private long positiveTestCount;
10 | private long totalTestCount;
11 | }
12 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/service/model/IdentitySupplier.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.service.model;
2 |
3 | import java.util.function.Supplier;
4 |
5 | /**
6 | * Specialization for a lambda function that tells us what we want to know about the current user.
7 | */
8 | public interface IdentitySupplier extends Supplier {}
9 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/patient-link-submit.graphql:
--------------------------------------------------------------------------------
1 | mutation patientLinkSubmit($internalId: String!, $birthDate: LocalDate!, $symptoms: String!, $symptomOnsetDate: LocalDate!) {
2 | patientLinkSubmit(
3 | internalId: $internalId,
4 | birthDate: $birthDate,
5 | symptoms: $symptoms,
6 | symptomOnset: $symptomOnsetDate
7 | )
8 | }
--------------------------------------------------------------------------------
/backend/src/test/resources/patientBulkUpload/missingHeaders.csv:
--------------------------------------------------------------------------------
1 | Doe,Jane,,,black or african american,11/3/1980,Female,not hispanic or latino,1234 Main Street,,Anchorage,,AK,99501,410-867-5309,mobile,No,No,Staff,jane@testingorg.com
2 | Samuels,Sally,,,white,8/15/1985,Female,hispanic or latino,987 Main Street,,Anchorage,,AK,99501,410-867-1111,mobile,No,No,Staff,sally@testingorg.com
--------------------------------------------------------------------------------
/ops/services/app_functions/report_stream_batched_publisher/functions/jest.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
2 | module.exports = {
3 | preset: "ts-jest",
4 | testEnvironment: "node",
5 | moduleNameMapper: {
6 | "^csv-stringify/sync":
7 | "/node_modules/csv-stringify/dist/cjs/sync.cjs",
8 | },
9 | };
10 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .vscode
2 | .DS_Store
3 | .idea/
4 | *.iml
5 | *.tfvars
6 | node_modules
7 | *.swp
8 | *.swo
9 | *.orig
10 | *.rej
11 | /.env
12 | /.env.local
13 | certs/
14 | yarn-error.log
15 | backend/locust/__pycache__/
16 | cypress/cypress.env.json
17 | frontend/src/.env.local
18 | .run/Backend.run.xml
19 | .run/Frontend.run.xml
20 | .tool-versions
21 | **/application-local*
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/InternalIdResolver.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api;
2 |
3 | import gov.cdc.usds.simplereport.db.model.DatabaseEntity;
4 | import java.util.UUID;
5 |
6 | /** Resolver mix-in to alias "id" to "internalId" */
7 | public interface InternalIdResolver {
8 | UUID getId(T entity);
9 | }
10 |
--------------------------------------------------------------------------------
/cypress/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import cypress from "eslint-plugin-cypress";
2 |
3 | export default [
4 | {
5 | plugins: {
6 | cypress: cypress,
7 | },
8 | languageOptions: {
9 | globals: {
10 | ...cypress.globals,
11 | },
12 | },
13 | rules: {
14 | "cypress/require-data-selectors": "warn",
15 | },
16 | },
17 | ];
18 |
--------------------------------------------------------------------------------
/cypress/utils/request-utils.js:
--------------------------------------------------------------------------------
1 | export const frontendURL = `${
2 | Cypress.env("REACT_APP_BASE_URL") || "https://localhost.simplereport.gov/app"
3 | }/`;
4 | const backendURL = Cypress.env("BACKEND_URL") || "http://localhost:8080";
5 | export const graphqlURL = `${backendURL}/graphql`;
6 | export const addOrgToQueueURL = `${backendURL}/account-request/organization-add-to-queue`;
7 |
--------------------------------------------------------------------------------
/frontend/src/app/patients/Components/PersonForm.scss:
--------------------------------------------------------------------------------
1 | .prime-edit-patient {
2 | .sr-add-another-button {
3 | column-gap: 0;
4 | }
5 |
6 | .sr-patient-sub-header {
7 | font-weight: bold;
8 | display: block;
9 | margin-block-start: 1.33em;
10 | margin-block-end: 1.33em;
11 | margin-inline-start: 0;
12 | margin-inline-end: 0;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/frontend/src/img/search--white.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/MultiplexResultInput.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 |
6 | @AllArgsConstructor
7 | @Getter
8 | public class MultiplexResultInput {
9 | private String diseaseName;
10 | private TestResult testResult;
11 | }
12 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/useraccountcreation/FactorAndQrCode.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.useraccountcreation;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 |
6 | @Getter
7 | @AllArgsConstructor
8 | public class FactorAndQrCode {
9 | private String factorId;
10 |
11 | private String qrcode;
12 | }
13 |
--------------------------------------------------------------------------------
/backend/src/test/resources/attachments/test-document.pdf:
--------------------------------------------------------------------------------
1 | %PDF-1.0
2 | 1 0 obj<>endobj 2 0 obj<>endobj 3 0 obj<>endobj
3 | xref
4 | 0 4
5 | 0000000000 65535 f
6 | 0000000010 00000 n
7 | 0000000053 00000 n
8 | 0000000102 00000 n
9 | trailer<>
10 | startxref
11 | 149
12 | %EOF
13 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/repository/FeatureFlagRepository.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.repository;
2 |
3 | import gov.cdc.usds.simplereport.db.model.FeatureFlag;
4 | import java.util.Optional;
5 |
6 | public interface FeatureFlagRepository extends AuditedEntityRepository {
7 | Optional findFeatureFlagByName(String name);
8 | }
9 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/organization-query.graphql:
--------------------------------------------------------------------------------
1 | query organization ($id: ID!){
2 | organization(id: $id) {
3 | internalId
4 | name
5 | type
6 | externalId
7 | identityVerified
8 | patientSelfRegistrationLink
9 | facilities{
10 | id
11 | name
12 | }
13 | id
14 | }
15 | }
--------------------------------------------------------------------------------
/frontend/src/app/Settings/Facility/Components/OrderingProvider.scss:
--------------------------------------------------------------------------------
1 | #ordering-provider-list {
2 | .usa-form-group {
3 | margin: 0;
4 | }
5 |
6 | .usa-checkbox__label {
7 | margin-top: 0;
8 | }
9 |
10 | .provider-row {
11 | padding: 16px 0;
12 | }
13 |
14 | .sr-provider-edit-link {
15 | text-decoration: none;
16 | font-weight: 600;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@arkweid/lefthook@^0.7.7":
6 | version "0.7.7"
7 | resolved "https://registry.yarnpkg.com/@arkweid/lefthook/-/lefthook-0.7.7.tgz#12951b09b955d8054885ffe929aa07a49f39027c"
8 | integrity sha512-Eq30OXKmjxIAIsTtbX2fcF3SNZIXS8yry1u8yty7PQFYRctx04rVlhOJCEB2UmfTh8T2vrOMC9IHHUvvo5zbaQ==
9 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/RequiredMessage.stories.tsx:
--------------------------------------------------------------------------------
1 | import { Meta } from "@storybook/react-webpack5";
2 |
3 | import RequiredMessage from "./RequiredMessage";
4 |
5 | export default {
6 | title: "Components/Form controls/Required message",
7 | component: RequiredMessage,
8 | } as Meta;
9 |
10 | export const Default: React.VFC<{}> = (args) => ;
11 |
--------------------------------------------------------------------------------
/frontend/src/app/testResults/mocks/patients.mock.tsx:
--------------------------------------------------------------------------------
1 | export const patients = [
2 | {
3 | internalId: "48c523e8-7c65-4047-955c-e3f65bb8b58a",
4 | firstName: "Barb",
5 | middleName: "Whitaker",
6 | lastName: "Cragell",
7 | birthDate: "1960-11-07",
8 | gender: "male",
9 | role: "RESIDENT",
10 | lookupId: null,
11 | __typename: "Patient",
12 | },
13 | ];
14 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/AddressInput.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model;
2 |
3 | import lombok.Builder;
4 | import lombok.Getter;
5 |
6 | @Getter
7 | @Builder
8 | public class AddressInput {
9 | private String street;
10 | private String streetTwo;
11 | private String city;
12 | private String state;
13 | private String zipCode;
14 | }
15 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/ReportStreamCallbackRequest.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model;
2 |
3 | import java.util.UUID;
4 | import lombok.Getter;
5 |
6 | @Getter
7 | public class ReportStreamCallbackRequest {
8 | private UUID testEventInternalId;
9 | private Boolean isError;
10 | private String details;
11 | private String queueName;
12 | }
13 |
--------------------------------------------------------------------------------
/docker-compose.ci.yml:
--------------------------------------------------------------------------------
1 | services:
2 | backend:
3 | environment:
4 | SPRING_PROFILES_ACTIVE: dev,db-dockerized
5 | SPRING_LIQUIBASE_ENABLED: "true"
6 | GIT_DISCOVERY_ACROSS_FILESYSTEM: 1
7 | frontend:
8 | image: ghcr.io/cdcgov/prime-simplereport/frontend-lighthouse:${DOCKER_FRONTEND_LIGHTHOUSE_IMAGE_VERSION:-latest}
9 | mailhog:
10 | profiles:
11 | - donotstart
--------------------------------------------------------------------------------
/frontend/src/app/testResults/viewResults/actionMenuModals/EmailTestResultModal.scss:
--------------------------------------------------------------------------------
1 | .email-test-result-modal-content {
2 | background: #fff;
3 | max-width: 30em;
4 | max-height: 90vh;
5 | padding: 28px 24px;
6 |
7 | .body {
8 | font-size: 16px;
9 | padding-bottom: 20px;
10 |
11 | .text {
12 | color: #565c65;
13 | padding-bottom: 20px;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/ops/services/app_service_autoscale/_var.tf:
--------------------------------------------------------------------------------
1 | variable "name" {}
2 | variable "env" {}
3 | variable "resource_group_name" {}
4 | variable "resource_group_location" {}
5 | variable "tags" {}
6 |
7 | variable "target_resource_id" {
8 | type = string
9 | }
10 |
11 | variable "peak_capacity_instances" {
12 | default = 1
13 | }
14 |
15 | variable "weekend_capacity_instances" {
16 | default = 1
17 | }
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/errors/NoDataLoaderFoundException.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.errors;
2 |
3 | public class NoDataLoaderFoundException extends IllegalStateException {
4 | public static final long serialVersionUID = 1L;
5 |
6 | public NoDataLoaderFoundException(String type) {
7 | super("No DataLoader found: " + type);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/DatabaseEntity.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model;
2 |
3 | import java.util.UUID;
4 |
5 | /**
6 | * Common interface to say "this is a thing we store in the database". Already being lightly abused,
7 | * and I haven't even committed it yet.
8 | */
9 | public interface DatabaseEntity {
10 |
11 | UUID getInternalId();
12 | }
13 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/CreateSpecimenType.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model;
2 |
3 | import lombok.Builder;
4 | import lombok.Getter;
5 |
6 | @Getter
7 | @Builder
8 | public class CreateSpecimenType {
9 | public String name;
10 | public String typeCode;
11 | public String collectionLocationName;
12 | public String collectionLocationCode;
13 | }
14 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/service/errors/InvalidAddressException.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.service.errors;
2 |
3 | import java.io.Serial;
4 |
5 | public class InvalidAddressException extends RuntimeException {
6 | @Serial private static final long serialVersionUID = 1L;
7 |
8 | public InvalidAddressException(String message) {
9 | super(message);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/LinkWithQuery.tsx:
--------------------------------------------------------------------------------
1 | import { NavLink, NavLinkProps, useLocation } from "react-router-dom";
2 |
3 | export const LinkWithQuery: React.FC = ({
4 | children,
5 | to,
6 | ...props
7 | }) => {
8 | const { search } = useLocation();
9 |
10 | return (
11 |
12 | {children}
13 |
14 | );
15 | };
16 |
--------------------------------------------------------------------------------
/frontend/src/app/utils/jestHelpers.tsx:
--------------------------------------------------------------------------------
1 | import { ReactElement } from "react";
2 | import { render } from "@testing-library/react";
3 | import userEvent from "@testing-library/user-event";
4 |
5 | /**
6 | * Setups userEvent and renders a component
7 | */
8 | export function setup(component: ReactElement) {
9 | return {
10 | user: userEvent.setup(),
11 | ...render(component),
12 | };
13 | }
14 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/service/model/reportstream/TokenResponse.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.service.model.reportstream;
2 |
3 | import com.fasterxml.jackson.annotation.JsonProperty;
4 | import lombok.Getter;
5 | import lombok.Setter;
6 |
7 | @Getter
8 | @Setter
9 | public class TokenResponse {
10 | @JsonProperty("access_token")
11 | private String accessToken;
12 | }
13 |
--------------------------------------------------------------------------------
/backend/src/test/resources/patientBulkUpload/missingRequiredFields.csv:
--------------------------------------------------------------------------------
1 | last_name,first_name,middle_name,suffix,race,date_of_birth,biological_sex,ethnicity,street,street_2,city,county,state,zip_code,phone_number,phone_number_type,employed_in_healthcare,resident_congregate_setting,role,email
2 | Doe,Jane,,,"",11/3/1980,Female,"",1234 Main Street,,Anchorage,,AK,99501,410-867-5309,landline,No,No,Staff,jane@testingorg.com
3 |
--------------------------------------------------------------------------------
/frontend/src/app/analytics/operations.graphql:
--------------------------------------------------------------------------------
1 | query GetTopLevelDashboardMetricsNew(
2 | $facilityId: ID
3 | $startDate: DateTime
4 | $endDate: DateTime
5 | $disease: String
6 | ) {
7 | topLevelDashboardMetrics(
8 | facilityId: $facilityId
9 | startDate: $startDate
10 | endDate: $endDate
11 | disease: $disease
12 | ) {
13 | positiveTestCount
14 | totalTestCount
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/frontend/src/app/supportAdmin/Components/SeparatorLine.tsx:
--------------------------------------------------------------------------------
1 | import "./SeparatorLine.scss";
2 | import React from "react";
3 | import classnames from "classnames";
4 |
5 | interface Props {
6 | classNames?: string;
7 | }
8 | const SeparatorLine: React.FC = ({ classNames }) => {
9 | return ;
10 | };
11 |
12 | export default SeparatorLine;
13 |
--------------------------------------------------------------------------------
/frontend/src/app/testResults/mocks/facilities.mock.tsx:
--------------------------------------------------------------------------------
1 | export const facilities = [
2 | {
3 | id: "1",
4 | name: "Facility 1",
5 | isDeleted: false,
6 | },
7 | {
8 | id: "2",
9 | name: "Facility 2",
10 | isDeleted: false,
11 | },
12 | ];
13 |
14 | export const facilitiesIncludeArchived = facilities.concat({
15 | id: "3",
16 | name: "Facility 3",
17 | isDeleted: true,
18 | });
19 |
--------------------------------------------------------------------------------
/ops/services/app_functions/test_data_publisher/functions/host.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0",
3 | "logging": {
4 | "applicationInsights": {
5 | "samplingSettings": {
6 | "isEnabled": true,
7 | "excludedTypes": "Request"
8 | }
9 | }
10 | },
11 | "extensionBundle": {
12 | "id": "Microsoft.Azure.Functions.ExtensionBundle",
13 | "version": "[3.3.0, 4.0.0)"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/frontend/src/app/patients/UploadPatients.scss:
--------------------------------------------------------------------------------
1 | .thick-bottom-border {
2 | border-bottom-width: 4px !important;
3 | width: 300px;
4 | }
5 |
6 | .maxw-710 {
7 | max-width: 44.375rem;
8 | }
9 |
10 | .maxw-560 {
11 | max-width: 35rem;
12 | }
13 |
14 | .prime-radio--horizontal__container {
15 | margin-right: 0.75rem !important;
16 | }
17 |
18 | .line-height-225 {
19 | line-height: 2.25rem !important;
20 | }
21 |
--------------------------------------------------------------------------------
/frontend/src/app/supportAdmin/PendingOrganizations/utils.tsx:
--------------------------------------------------------------------------------
1 | export interface PendingOrganizationFormValues {
2 | name: string;
3 | adminFirstName: string | undefined;
4 | adminLastName: string | undefined;
5 | adminEmail: string | undefined;
6 | adminPhone: string | undefined;
7 | }
8 |
9 | export interface EditOrgMutationResponse {
10 | data: {
11 | editPendingOrganization: string;
12 | };
13 | }
14 |
--------------------------------------------------------------------------------
/backend/locust/locustfile.py:
--------------------------------------------------------------------------------
1 | import time
2 | from locust import HttpUser, task, between
3 |
4 | class QuickstartSimpleReport(HttpUser):
5 | root_url = "http://backend:8080"
6 |
7 | @task
8 | def health_test(self):
9 | self.client.get(QuickstartSimpleReport.root_url)
10 |
11 | # Runs at the start of each test. Useful for authentication and setup actions.
12 | def on_start(self):
13 | pass
14 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/PersonNameResolver.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api;
2 |
3 | import gov.cdc.usds.simplereport.db.model.PersonEntity;
4 | import gov.cdc.usds.simplereport.db.model.auxiliary.PersonName;
5 |
6 | /** Resolver mix-in to handle aliasing "nameInfo" to "name" */
7 | public interface PersonNameResolver {
8 | PersonName getName(T entity);
9 | }
10 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/service/model/SmsAPICallResult.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.service.model;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Getter;
6 |
7 | @AllArgsConstructor
8 | @Builder
9 | @Getter
10 | public class SmsAPICallResult {
11 | private String telephone;
12 | private String messageId;
13 | private boolean successful;
14 | }
15 |
--------------------------------------------------------------------------------
/frontend/src/app/VersionEnforcer.tsx:
--------------------------------------------------------------------------------
1 | import { useEffect } from "react";
2 | import { useLocation } from "react-router-dom";
3 |
4 | import { VersionService } from "./VersionService";
5 |
6 | const VersionEnforcer = () => {
7 | const location = useLocation();
8 |
9 | useEffect(() => {
10 | VersionService.enforce();
11 | }, [location]);
12 |
13 | return null;
14 | };
15 |
16 | export default VersionEnforcer;
17 |
--------------------------------------------------------------------------------
/ops/services/alerts/app_service_metrics/data.tf:
--------------------------------------------------------------------------------
1 | data "azurerm_resource_group" "management" {
2 | name = "prime-simple-report-management"
3 | }
4 |
5 | data "azurerm_resource_group" "app" {
6 | name = var.rg_name
7 | }
8 |
9 | data "azurerm_log_analytics_workspace" "global" {
10 | name = "simple-report-log-workspace-global"
11 | resource_group_name = data.azurerm_resource_group.management.name
12 | }
13 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/useraccountcreation/FactorAndActivation.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.useraccountcreation;
2 |
3 | import java.util.Map;
4 | import lombok.AllArgsConstructor;
5 | import lombok.Getter;
6 |
7 | @Getter
8 | @AllArgsConstructor
9 | public class FactorAndActivation {
10 | private String factorId;
11 |
12 | private Map activation;
13 | }
14 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/TestResultWithCount.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 |
6 | /** The results from a group by when getting dashboard metrics */
7 | @AllArgsConstructor
8 | @Getter
9 | public class TestResultWithCount {
10 | private TestResult result;
11 | private Long count;
12 | }
13 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/repository/PatientLinkFailedAttemptRepository.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.repository;
2 |
3 | import gov.cdc.usds.simplereport.db.model.PatientLinkFailedAttempt;
4 | import java.util.UUID;
5 | import org.springframework.data.repository.CrudRepository;
6 |
7 | public interface PatientLinkFailedAttemptRepository
8 | extends CrudRepository {}
9 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/service/ReportStreamCallbackService.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.service;
2 |
3 | import gov.cdc.usds.simplereport.db.model.ReportStreamResponse;
4 | import jakarta.servlet.http.HttpServletRequest;
5 |
6 | public interface ReportStreamCallbackService {
7 | boolean validateCallback(HttpServletRequest request);
8 |
9 | void log(ReportStreamResponse response);
10 | }
11 |
--------------------------------------------------------------------------------
/backend/src/test/resources/patientBulkUpload/invalidValues.csv:
--------------------------------------------------------------------------------
1 | last_name,first_name,middle_name,suffix,race,date_of_birth,biological_sex,ethnicity,street,street_2,city,county,state,zip_code,country,phone_number,phone_number_type,employed_in_healthcare,resident_congregate_setting,role,email
2 | Doe,Jane,,,african american,11/3/8,androgynous,latinx,1234 Main Street,,Anchorage,,Alaska,1234,America,4108675309,cell,n/a,group home,doctor,janedoe.com
--------------------------------------------------------------------------------
/backend/src/test/resources/patientBulkUpload/validEmptyOptionalValues.csv:
--------------------------------------------------------------------------------
1 | last_name,first_name,middle_name,suffix,race,date_of_birth,biological_sex,ethnicity,street,street_2,city,county,state,zip_code,phone_number,phone_number_type,employed_in_healthcare,resident_congregate_setting,role,email,gender_identity
2 | Kuphal,Lucienne,,,black or african american,3/12/86,female,hispanic or latino,5945 Rath Manors,,,,AK,99501,410-675-4559,Mobile,No,No,,,
--------------------------------------------------------------------------------
/frontend/src/app/signUp/IdentityVerification/NextSteps.test.tsx:
--------------------------------------------------------------------------------
1 | import { render, screen } from "@testing-library/react";
2 |
3 | import NextSteps from "./NextSteps";
4 |
5 | describe("NextSteps", () => {
6 | it("renders", () => {
7 | render();
8 | expect(
9 | screen.getByText("Identity verification needed", {
10 | exact: false,
11 | })
12 | ).toBeInTheDocument();
13 | });
14 | });
15 |
--------------------------------------------------------------------------------
/ops/services/app_functions/report_stream_batched_publisher/functions/host.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0",
3 | "logging": {
4 | "applicationInsights": {
5 | "samplingSettings": {
6 | "isEnabled": true,
7 | "excludedTypes": "Request"
8 | }
9 | }
10 | },
11 | "extensionBundle": {
12 | "id": "Microsoft.Azure.Functions.ExtensionBundle",
13 | "version": "[3.3.0, 4.0.0)"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/converter/FhirContextProvider.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.converter;
2 |
3 | import ca.uhn.fhir.context.FhirContext;
4 |
5 | public final class FhirContextProvider {
6 | private static final FhirContext SHARED = FhirContext.forR4Cached();
7 |
8 | private FhirContextProvider() {}
9 |
10 | public static FhirContext get() {
11 | return SHARED;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/add-to-queue.graphql:
--------------------------------------------------------------------------------
1 | mutation enqueueById($id: ID!, $facilityId: ID!, $symptomOnsetDate: LocalDate, $testResultDelivery: TestResultDeliveryPreference) {
2 | addPatientToQueue(
3 | patientId: $id,
4 | facilityId: $facilityId,
5 | pregnancy: "no",
6 | symptoms:"{}",
7 | symptomOnset: $symptomOnsetDate,
8 | testResultDelivery: $testResultDelivery
9 | )
10 | }
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/AggregateFacilityMetrics.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 |
6 | @AllArgsConstructor
7 | @Getter
8 | public class AggregateFacilityMetrics {
9 | private String facilityName;
10 | private long totalTestCount;
11 | private long positiveTestCount;
12 | private long negativeTestCount;
13 | }
14 |
--------------------------------------------------------------------------------
/backend/src/main/resources/application-okta-test.yaml:
--------------------------------------------------------------------------------
1 | # Bean profile to be included in deployment-specific profiles
2 | # for TEST deployments.
3 | okta:
4 | oauth2:
5 | client-id: 0oa1khettjHnj3EPT1d7
6 | issuer: https://hhs-prime.oktapreview.com/oauth2/default
7 | client:
8 | org-url: https://hhs-prime.oktapreview.com
9 | simple-report:
10 | authorization:
11 | role-claim: test_roles
12 | environment-name: "TEST"
13 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/Button/Button.stories.tsx:
--------------------------------------------------------------------------------
1 | import { StoryFn, Meta } from "@storybook/react-webpack5";
2 |
3 | import Button from "./Button";
4 |
5 | export default {
6 | title: "Components/Button",
7 | component: Button,
8 | argTypes: {},
9 | } as Meta;
10 |
11 | const Template: StoryFn = (args) => ;
12 |
13 | export const Default = Template.bind({});
14 | Default.args = { label: "Button" };
15 |
--------------------------------------------------------------------------------
/frontend/src/i18n.ts:
--------------------------------------------------------------------------------
1 | import i18n from "i18next";
2 | import { initReactI18next } from "react-i18next";
3 |
4 | import { en } from "./lang/en";
5 | import { es } from "./lang/es";
6 |
7 | export const resources = { en, es };
8 |
9 | i18n.use(initReactI18next).init({
10 | resources,
11 | lng: localStorage.getItem("language") || "en",
12 | interpolation: {
13 | escapeValue: false,
14 | },
15 | });
16 |
17 | export default i18n;
18 |
--------------------------------------------------------------------------------
/.run/Frontend.run.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/backend/src/main/resources/application-okta-dev.yaml:
--------------------------------------------------------------------------------
1 | # Bean profile to be included in deployment-specific profiles
2 | # for DEV/TEST deployments.
3 | okta:
4 | oauth2:
5 | client-id: 0oa1khbp5n2wTfe281d7
6 | issuer: https://hhs-prime.oktapreview.com/oauth2/default
7 | client:
8 | org-url: https://hhs-prime.oktapreview.com
9 | simple-report:
10 | authorization:
11 | role-claim: dev_roles
12 | environment-name: "DEV"
13 |
--------------------------------------------------------------------------------
/backend/src/main/resources/application-okta-dev2.yaml:
--------------------------------------------------------------------------------
1 | # Bean profile to be included in deployment-specific profiles
2 | # for DEV/TEST deployments.
3 | okta:
4 | oauth2:
5 | client-id: 0oa3ii5dwmasAsCww1d7
6 | issuer: https://hhs-prime.oktapreview.com/oauth2/default
7 | client:
8 | org-url: https://hhs-prime.oktapreview.com
9 | simple-report:
10 | authorization:
11 | role-claim: dev2_roles
12 | environment-name: "DEV2"
13 |
--------------------------------------------------------------------------------
/backend/src/main/resources/application-okta-dev3.yaml:
--------------------------------------------------------------------------------
1 | # Bean profile to be included in deployment-specific profiles
2 | # for DEV/TEST deployments.
3 | okta:
4 | oauth2:
5 | client-id: 0oa3ivrvd9Jhvt8Sb1d7
6 | issuer: https://hhs-prime.oktapreview.com/oauth2/default
7 | client:
8 | org-url: https://hhs-prime.oktapreview.com
9 | simple-report:
10 | authorization:
11 | role-claim: dev3_roles
12 | environment-name: "DEV3"
13 |
--------------------------------------------------------------------------------
/backend/src/main/resources/application-okta-dev4.yaml:
--------------------------------------------------------------------------------
1 | # Bean profile to be included in deployment-specific profiles
2 | # for DEV/TEST deployments.
3 | okta:
4 | oauth2:
5 | client-id: 0oa3j1kbqp4ip5Osz1d7
6 | issuer: https://hhs-prime.oktapreview.com/oauth2/default
7 | client:
8 | org-url: https://hhs-prime.oktapreview.com
9 | simple-report:
10 | authorization:
11 | role-claim: dev4_roles
12 | environment-name: "DEV4"
13 |
--------------------------------------------------------------------------------
/backend/src/main/resources/application-okta-dev5.yaml:
--------------------------------------------------------------------------------
1 | # Bean profile to be included in deployment-specific profiles
2 | # for DEV/TEST deployments.
3 | okta:
4 | oauth2:
5 | client-id: 0oa5utork4AEiKyO71d7
6 | issuer: https://hhs-prime.oktapreview.com/oauth2/default
7 | client:
8 | org-url: https://hhs-prime.oktapreview.com
9 | simple-report:
10 | authorization:
11 | role-claim: dev5_roles
12 | environment-name: "DEV5"
13 |
--------------------------------------------------------------------------------
/backend/src/main/resources/application-okta-dev6.yaml:
--------------------------------------------------------------------------------
1 | # Bean profile to be included in deployment-specific profiles
2 | # for DEV/TEST deployments.
3 | okta:
4 | oauth2:
5 | client-id: 0oa5uvg0531PLkxNP1d7
6 | issuer: https://hhs-prime.oktapreview.com/oauth2/default
7 | client:
8 | org-url: https://hhs-prime.oktapreview.com
9 | simple-report:
10 | authorization:
11 | role-claim: dev6_roles
12 | environment-name: "DEV6"
13 |
--------------------------------------------------------------------------------
/frontend/src/app/accountCreation/MfaOktaVerify/MfaOktaVerify.tsx:
--------------------------------------------------------------------------------
1 | import { MfaVerify } from "../MfaVerify/MfaVerify";
2 | import { useDocumentTitle } from "../../utils/hooks";
3 |
4 | export const MfaOktaVerify = () => {
5 | useDocumentTitle("Verify your security code from Okta Verify");
6 |
7 | return (
8 | Enter a code from the Okta Verify app.>}
10 | hideResend={true}
11 | />
12 | );
13 | };
14 |
--------------------------------------------------------------------------------
/frontend/src/app/accountCreation/MfaSms/MfaSms.stories.tsx:
--------------------------------------------------------------------------------
1 | import { StoryFn, Meta } from "@storybook/react-webpack5";
2 |
3 | import { MfaSms } from "./MfaSms";
4 |
5 | export default {
6 | title: "App/Account set up/Step 3a: SMS MFA",
7 | component: MfaSms,
8 | argTypes: {},
9 | } as Meta;
10 |
11 | const Template: StoryFn = (args) => ;
12 |
13 | export const Default = Template.bind({});
14 | Default.args = {};
15 |
--------------------------------------------------------------------------------
/.dockerignore:
--------------------------------------------------------------------------------
1 | #Ignore the following directories
2 | backend/build/
3 | backend/.gradle/
4 | frontend/build/
5 | frontend/node_modules/
6 | nginx/
7 | ops/**/.terraform/
8 | ops/services/app_functions/report_stream_batched_publisher/functions/node_modules/
9 | ops/services/app_functions/test_data_publisher/functions/node_modules/
10 | docs/
11 | .github/
12 | .run/
13 | node_modules/
14 | cypress/node_modules/
15 | cypress/screenshots/
16 | cypress/videos/
--------------------------------------------------------------------------------
/frontend/src/app/Settings/operations.graphql:
--------------------------------------------------------------------------------
1 | query GetCurrentOrganization {
2 | whoami {
3 | organization {
4 | id
5 | name
6 | type
7 | }
8 | }
9 | }
10 |
11 | mutation AdminSetOrganization($name: String!, $type: String!) {
12 | adminUpdateOrganization(name: $name, type: $type)
13 | }
14 |
15 | mutation SetOrganization($type: String!) {
16 | updateOrganization(type: $type)
17 | }
18 |
--------------------------------------------------------------------------------
/frontend/src/app/telemetry-provider.tsx:
--------------------------------------------------------------------------------
1 | import React, { useEffect } from "react";
2 |
3 | import { ai } from "./TelemetryService";
4 |
5 | type TelemetryProviderProps = {
6 | children: React.ReactNode;
7 | };
8 |
9 | const TelemetryProvider: React.FC = ({ children }) => {
10 | useEffect(() => {
11 | ai.initialize();
12 | });
13 |
14 | return <>{children}>;
15 | };
16 |
17 | export default TelemetryProvider;
18 |
--------------------------------------------------------------------------------
/frontend/src/app/testQueue/mocks/mockSupportedDiseaseCovid.ts:
--------------------------------------------------------------------------------
1 | import mockSupportedDiseaseTestPerformedCovid from "../../supportAdmin/DeviceType/mocks/mockSupportedDiseaseTestPerformedCovid";
2 |
3 | const mockSupportedDiseaseCovid = [
4 | {
5 | supportedDisease:
6 | mockSupportedDiseaseTestPerformedCovid[0].supportedDisease,
7 | testPerformedLoincCode: "123456",
8 | },
9 | ];
10 |
11 | export default mockSupportedDiseaseCovid;
12 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/SupportedDiseaseTestResult.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | import gov.cdc.usds.simplereport.db.model.SupportedDisease;
4 | import lombok.AllArgsConstructor;
5 | import lombok.Getter;
6 |
7 | @AllArgsConstructor
8 | @Getter
9 | public class SupportedDiseaseTestResult {
10 | private SupportedDisease disease;
11 | private TestResult testResult;
12 | }
13 |
--------------------------------------------------------------------------------
/backend/src/main/resources/application-okta-pentest.yaml:
--------------------------------------------------------------------------------
1 | # Bean profile to be included in deployment-specific profiles
2 | # for PENTEST deployments.
3 | okta:
4 | oauth2:
5 | client-id: 0oa1hwvzb4X0sgGAt1d7
6 | issuer: https://hhs-prime.oktapreview.com/oauth2/default
7 | client:
8 | org-url: https://hhs-prime.oktapreview.com
9 | simple-report:
10 | authorization:
11 | role-claim: pentest_roles
12 | environment-name: "PENTEST"
13 |
--------------------------------------------------------------------------------
/backend/src/test/resources/patientBulkUpload/alternateValues.csv:
--------------------------------------------------------------------------------
1 | last_name,first_name,middle_name,suffix,race,date_of_birth,biological_sex,ethnicity,street,street_2,city,county,state,zip_code,phone_number,phone_number_type,employed_in_healthcare,resident_congregate_setting,role,email,gender_identity,address_notes
2 | Sporer,Foobar,,,2028-9,6/12/40,A,2186-5,** Unknown / not given **,,Palm Bay,,NA,00000,410-881-4268,Landline,U,Unk,Staff,bla@fake-email19082304.com,,
3 |
--------------------------------------------------------------------------------
/frontend/src/app/testResults/mocks/resultForEmail.ts:
--------------------------------------------------------------------------------
1 | const resultForEmail = {
2 | id: "0969da96-b211-41cd-ba61-002181f0123a",
3 | dateTested: "2022-09-30T12:16:50.064Z",
4 | patient: {
5 | firstName: "Boban",
6 | middleName: null,
7 | lastName: "L",
8 | email: "me@example.com",
9 | emails: ["me@example.com"],
10 | __typename: "Patient",
11 | },
12 | __typename: "Result",
13 | };
14 |
15 | export default resultForEmail;
16 |
--------------------------------------------------------------------------------
/.run/e2e local open.run.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/backend/db-setup/create-db.sh:
--------------------------------------------------------------------------------
1 |
2 | RESET_DIR=${LIB_DIR:-/usr/local/lib}
3 |
4 | createuser -U "$POSTGRES_USER" -w simple_report_migrations --createrole
5 | createuser -U "$POSTGRES_USER" -w simple_report_app
6 | createdb -U "$POSTGRES_USER" -w simple_report --maintenance-db="$POSTGRES_DB"
7 | createdb -U "$POSTGRES_USER" -w metabase --maintenance-db="$POSTGRES_DB"
8 |
9 | psql -v ON_ERROR_STOP=1 -U "$POSTGRES_USER" simple_report -f "$RESET_DIR/reset-db.sql"
10 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/organization-by-name-query.graphql:
--------------------------------------------------------------------------------
1 | query OrganizationByName ($name: String!, $isDeleted: Boolean){
2 | organizationsByName(name: $name, isDeleted: $isDeleted) {
3 | internalId
4 | name
5 | type
6 | externalId
7 | identityVerified
8 | patientSelfRegistrationLink
9 | facilities{
10 | id
11 | name
12 | }
13 | id
14 | }
15 | }
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/person-with-facility-query.graphql:
--------------------------------------------------------------------------------
1 | {
2 | patients {
3 | internalId
4 | id
5 | firstName
6 | lastName
7 | name {
8 | firstName
9 | lastName
10 | }
11 |
12 | street
13 | city
14 | state
15 | address {
16 | streetOne
17 | city
18 | state
19 | }
20 |
21 | birthDate
22 | telephone
23 | facility {
24 | id
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/frontend/src/app/accountCreation/MfaPhone/MfaPhone.stories.tsx:
--------------------------------------------------------------------------------
1 | import { StoryFn, Meta } from "@storybook/react-webpack5";
2 |
3 | import { MfaPhone } from "./MfaPhone";
4 |
5 | export default {
6 | title: "App/Account set up/Step 3a: Voice Call MFA",
7 | component: MfaPhone,
8 | argTypes: {},
9 | } as Meta;
10 |
11 | const Template: StoryFn = (args) => ;
12 |
13 | export const Default = Template.bind({});
14 | Default.args = {};
15 |
--------------------------------------------------------------------------------
/frontend/src/app/signUp/Organization/SignUpGoals.stories.tsx:
--------------------------------------------------------------------------------
1 | import { StoryFn, Meta } from "@storybook/react-webpack5";
2 |
3 | import SignUpGoals from "./SignUpGoals";
4 |
5 | export default {
6 | title: "App/Sign up/Step 1: Sign Up Goals",
7 | component: SignUpGoals,
8 | argTypes: {},
9 | } as Meta;
10 |
11 | const Template: StoryFn = (args) => ;
12 |
13 | export const Default = Template.bind({});
14 | Default.args = {};
15 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/set-user-is-deleted.graphql:
--------------------------------------------------------------------------------
1 | mutation setUserIsDeleted(
2 | $id: ID!,
3 | $deleted: Boolean!,
4 | ){
5 | setUserIsDeleted(
6 | id: $id
7 | deleted: $deleted
8 | ) {
9 | id
10 | firstName,
11 | middleName,
12 | lastName,
13 | suffix,
14 | email,
15 | permissions,
16 | organization {
17 | name
18 | externalId
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/frontend/src/app/accountCreation/MfaSelect/MfaSelect.stories.tsx:
--------------------------------------------------------------------------------
1 | import { StoryFn, Meta } from "@storybook/react-webpack5";
2 |
3 | import { MfaSelect } from "./MfaSelect";
4 |
5 | export default {
6 | title: "App/Account set up/Step 3: MFA Select",
7 | component: MfaSelect,
8 | argTypes: {},
9 | } as Meta;
10 |
11 | const Template: StoryFn = (args) => ;
12 |
13 | export const Default = Template.bind({});
14 | Default.args = {};
15 |
--------------------------------------------------------------------------------
/frontend/src/app/utils/state.ts:
--------------------------------------------------------------------------------
1 | import {
2 | states,
3 | orderingProviderNotRequiredStates,
4 | } from "../../config/constants";
5 |
6 | interface States {
7 | [key: string]: string;
8 | }
9 |
10 | export function getStateNameFromCode(stateCode: keyof States): string {
11 | return (states as States)[stateCode];
12 | }
13 |
14 | export function requiresOrderProvider(state: string) {
15 | return !orderingProviderNotRequiredStates.includes(state);
16 | }
17 |
--------------------------------------------------------------------------------
/frontend/src/app/signUp/Organization/RequestAccess.stories.tsx:
--------------------------------------------------------------------------------
1 | import { StoryFn, Meta } from "@storybook/react-webpack5";
2 |
3 | import RequestAccess from "./RequestAccess";
4 |
5 | export default {
6 | title: "App/Sign up/Step 2a: Request access",
7 | component: RequestAccess,
8 | argTypes: {},
9 | } as Meta;
10 |
11 | const Template: StoryFn = (args) => ;
12 |
13 | export const Default = Template.bind({});
14 | Default.args = {};
15 |
--------------------------------------------------------------------------------
/.run/e2e local headless.run.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.run/storybook.run.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/accountrequest/IdentityVerificationQuestionsResponse.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.accountrequest;
2 |
3 | import com.fasterxml.jackson.databind.JsonNode;
4 | import lombok.AllArgsConstructor;
5 | import lombok.Getter;
6 |
7 | @AllArgsConstructor
8 | @Getter
9 | public class IdentityVerificationQuestionsResponse {
10 |
11 | private String sessionId;
12 | private JsonNode questionSet;
13 | }
14 |
--------------------------------------------------------------------------------
/backend/src/main/resources/application-azure-demo.yaml:
--------------------------------------------------------------------------------
1 | simple-report:
2 | patient-link-url: https://demo.simplereport.gov/app/pxp?plid=
3 | twilio-callback-url: https://demo.simplereport.gov/api/pxp/callback
4 | sendgrid:
5 | enabled: false
6 | cors:
7 | allowed-origins:
8 | - https://simple-report-api-demo.azurewebsites.net
9 | - https://simple-report-demo.azureedge.net
10 | - https://demo.simplereport.gov
11 | twilio:
12 | enabled: false
13 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/person-query.graphql:
--------------------------------------------------------------------------------
1 | query GetPatients($facilityId: ID = null) {
2 | patients(facilityId: $facilityId) {
3 | id
4 | internalId
5 |
6 | firstName
7 | lastName
8 | name {
9 | firstName
10 | lastName
11 | }
12 | birthDate
13 | telephone
14 |
15 | street
16 | city
17 | state
18 |
19 | address {
20 | streetOne
21 | city
22 | state
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/frontend/src/app/accountCreation/MfaComplete/MfaComplete.test.tsx:
--------------------------------------------------------------------------------
1 | import { render, screen } from "@testing-library/react";
2 |
3 | import { MfaComplete } from "./MfaComplete";
4 |
5 | describe("MfaComplete", () => {
6 | it("can render", () => {
7 | render();
8 | expect(
9 | screen.getByText(
10 | "To start using SimpleReport, visit the website to log in to your account."
11 | )
12 | ).toBeInTheDocument();
13 | });
14 | });
15 |
--------------------------------------------------------------------------------
/frontend/src/app/signUp/IdentityVerification/NextSteps.stories.tsx:
--------------------------------------------------------------------------------
1 | import { StoryFn, Meta } from "@storybook/react-webpack5";
2 |
3 | import NextSteps from "./NextSteps";
4 |
5 | export default {
6 | title: "App/Identity Verification/Step 3: Verification Failed",
7 | component: NextSteps,
8 | argTypes: {},
9 | } as Meta;
10 |
11 | const Template: StoryFn = (args) => ;
12 |
13 | export const Default = Template.bind({});
14 | Default.args = {};
15 |
--------------------------------------------------------------------------------
/frontend/src/app/accountCreation/MfaComplete/MfaComplete.stories.tsx:
--------------------------------------------------------------------------------
1 | import { StoryFn, Meta } from "@storybook/react-webpack5";
2 |
3 | import { MfaComplete } from "./MfaComplete";
4 |
5 | export default {
6 | title: "App/Account set up/Step 3c: MFA complete",
7 | component: MfaComplete,
8 | argTypes: {},
9 | } as Meta;
10 |
11 | const Template: StoryFn = (args) => ;
12 |
13 | export const Default = Template.bind({});
14 | Default.args = {};
15 |
--------------------------------------------------------------------------------
/frontend/src/app/supportAdmin/DeviceType/types.d.ts:
--------------------------------------------------------------------------------
1 | interface DeviceType {
2 | internalId: string;
3 | name: string;
4 | testLength?: number | undefined;
5 | supportedDiseaseTestPerformed?: {
6 | supportedDisease: {
7 | internalId: string;
8 | loinc: string;
9 | name: string;
10 | };
11 | testPerformedLoincCode: string;
12 | testkitNameId?: string;
13 | equipmentUid?: string;
14 | testOrderedLoincCode: string;
15 | }[];
16 | }
17 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/useraccountcreation/RequestConstants.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.useraccountcreation;
2 |
3 | public class RequestConstants {
4 |
5 | private RequestConstants() {
6 | throw new IllegalStateException("RequestConstants cannot be initialized.");
7 | }
8 |
9 | public static final int STANDARD_REQUEST_STRING_LIMIT = 256;
10 |
11 | public static final int LARGE_REQUEST_STRING_LIMIT = 512;
12 | }
13 |
--------------------------------------------------------------------------------
/frontend/src/app/accountCreation/MfaGoogleAuthVerify/MfaGoogleAuthVerify.tsx:
--------------------------------------------------------------------------------
1 | import { MfaVerify } from "../MfaVerify/MfaVerify";
2 | import { useDocumentTitle } from "../../utils/hooks";
3 |
4 | export const MfaGoogleAuthVerify = () => {
5 | useDocumentTitle("Verify your security code from Google Authenticator");
6 |
7 | return (
8 | Enter a code from the Google Authenticator app.>}
10 | hideResend={true}
11 | />
12 | );
13 | };
14 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/MappingConstants.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api;
2 |
3 | public class MappingConstants {
4 | private MappingConstants() {
5 | throw new IllegalStateException("Utility class");
6 | }
7 |
8 | public static final String UNK_CODE = "UNK";
9 | public static final String UNKNOWN_STRING = "unknown";
10 | public static final String U_CODE = "U";
11 | public static final String ASKED_BUT_UNKNOWN_CODE = "ASKU";
12 | }
13 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/converter/HapiContextProvider.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.converter;
2 |
3 | import ca.uhn.hl7v2.DefaultHapiContext;
4 | import ca.uhn.hl7v2.HapiContext;
5 | import lombok.NoArgsConstructor;
6 |
7 | @NoArgsConstructor
8 | public final class HapiContextProvider {
9 | private static final HapiContext SHARED = new DefaultHapiContext();
10 |
11 | public static HapiContext get() {
12 | return SHARED;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/errors/ExpiredPatientLinkException.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.errors;
2 |
3 | import org.springframework.http.HttpStatus;
4 | import org.springframework.web.bind.annotation.ResponseStatus;
5 |
6 | @ResponseStatus(code = HttpStatus.GONE, reason = "This patient link is expired.")
7 | public class ExpiredPatientLinkException extends RuntimeException {
8 | private static final long serialVersionUID = 1L;
9 | }
10 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/delete-person.graphql:
--------------------------------------------------------------------------------
1 | mutation setPatientIsDeleted(
2 | $id: ID!,
3 | $deleted: Boolean = true,
4 | $orgExternalId: String,
5 | ){
6 | setPatientIsDeleted(
7 | id: $id
8 | deleted: $deleted,
9 | orgExternalId: $orgExternalId
10 | ) {
11 | internalId
12 | lookupId
13 | firstName
14 | middleName
15 | lastName
16 | suffix
17 | isDeleted
18 | facility {
19 | id
20 | }
21 | }
22 | }
--------------------------------------------------------------------------------
/backend/src/test/resources/patientBulkUpload/valid.csv:
--------------------------------------------------------------------------------
1 | last_name,first_name,middle_name,suffix,race,date_of_birth,biological_sex,ethnicity,street,street_2,city,county,state,zip_code,phone_number,phone_number_type,employed_in_healthcare,resident_congregate_setting,role,email,gender_identity,address_notes
2 | Doe,Jane,Amanda,,black or african american,11/3/80,Female,not hispanic or latino,1234 Main Street,Apt 2,Anchorage,,AK,99501,410-867-5309,mobile,No,No,Staff,jane@testingorg.com,FEMALE,some address note
--------------------------------------------------------------------------------
/frontend/src/app/signUp/IdentityVerification/QuestionsForm.scss:
--------------------------------------------------------------------------------
1 | #experian-questions-header {
2 | border-bottom: none;
3 | padding: 1.5rem 0 0 0;
4 |
5 | h4 {
6 | margin-bottom: 0;
7 | }
8 |
9 | .timer-button {
10 | margin-left: auto;
11 | }
12 | }
13 |
14 | .experian-countdown-alert {
15 | line-height: 1.4;
16 | font-size: 1rem;
17 | }
18 |
19 | .questions-form-name {
20 | font-size: 1.17em;
21 | margin-block-start: 1em;
22 | margin-block-end: 1em;
23 | }
24 |
--------------------------------------------------------------------------------
/frontend/src/app/signUp/Organization/OrganizationForm.stories.tsx:
--------------------------------------------------------------------------------
1 | import { StoryFn, Meta } from "@storybook/react-webpack5";
2 |
3 | import OrganizationForm from "./OrganizationForm";
4 |
5 | export default {
6 | title: "App/Sign up/Step 2b: Organization form",
7 | component: OrganizationForm,
8 | argTypes: {},
9 | } as Meta;
10 |
11 | const Template: StoryFn = (args) => ;
12 |
13 | export const Default = Template.bind({});
14 | Default.args = {};
15 |
--------------------------------------------------------------------------------
/frontend/src/react-app-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | interface User {
4 | id: string;
5 | firstName: string;
6 | middleName: string;
7 | lastName: string;
8 | suffix: string;
9 | email: string;
10 | type?: UserType; // TODO: remove optional prop
11 | permissions?: UserPermission[]; // TODO: remove optional prop
12 | roleDescription: RoleDescription;
13 | }
14 |
15 | type RouterWithFacilityProps = {
16 | children: React.ReactNode;
17 | };
18 |
--------------------------------------------------------------------------------
/.env.cypress.remote.sample:
--------------------------------------------------------------------------------
1 | # Docker settings
2 | DOCKER_CLIENT_TIMEOUT=180
3 | COMPOSE_HTTP_TIMEOUT=180
4 |
5 | # Cypress settings
6 | SPEC_PATH="cypress/e2e/**"
7 | TEST_ENV=https://test.simplereport.gov
8 |
9 | CYPRESS_OKTA_USERNAME=
10 | CYPRESS_OKTA_PASSWORD=
11 | CYPRESS_OKTA_SECRET=
12 | CYPRESS_OKTA_REDIRECT_URI="https%3A%2F%2Ftest.simplereport.gov%2Fapp%2F"
13 | CYPRESS_OKTA_SCOPE="simple_report_test"
14 | CYPRESS_OKTA_CLIENT_ID="0oa1khettjHnj3EPT1d7"
15 |
16 | CYPRESS_BACKEND_URL=
17 |
--------------------------------------------------------------------------------
/.github/actions/stg-wait-for-slot-readiness/action.yml:
--------------------------------------------------------------------------------
1 | name: Terraform Action wait for slot readiness
2 | description: Build and push Docker image to the registry
3 | inputs:
4 | deploy_env:
5 | description: The environment to deploy to
6 | required: true
7 |
8 | runs:
9 | using: composite
10 | steps:
11 | - name: Wait for staging deploy to be ready
12 | working-directory: ./ops
13 | shell: bash
14 | run: make wait-for-${{ inputs.deploy_env }}-slot-readiness
15 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/repository/TextMessageStatusRepository.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.repository;
2 |
3 | import gov.cdc.usds.simplereport.db.model.TextMessageSent;
4 | import gov.cdc.usds.simplereport.db.model.TextMessageStatus;
5 | import java.util.List;
6 |
7 | public interface TextMessageStatusRepository extends AuditedEntityRepository {
8 | List findAllByTextMessageSent(TextMessageSent message);
9 | }
10 |
--------------------------------------------------------------------------------
/backend/src/main/resources/application-azure-pentest.yaml:
--------------------------------------------------------------------------------
1 | simple-report:
2 | patient-link-url: https://pentest.simplereport.gov/app/pxp?plid=
3 | twilio-callback-url: https://pentest.simplereport.gov/api/pxp/callback
4 | sendgrid:
5 | enabled: true
6 | cors:
7 | allowed-origins:
8 | - https://simple-report-api-pentest.azurewebsites.net
9 | - https://simple-report-pentest.azureedge.net
10 | - https://pentest.simplereport.gov
11 | twilio:
12 | enabled: true
13 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/UserDetails/UserHeading.scss:
--------------------------------------------------------------------------------
1 | .user-name-header {
2 | font-style: normal;
3 | font-weight: bold;
4 | font-size: 32px;
5 | line-height: 38px;
6 | color: #1b1b1b;
7 | }
8 |
9 | .status-tagline {
10 | font-style: italic;
11 | font-weight: normal;
12 | font-size: 16px;
13 | line-height: 120%;
14 | color: #3d4551;
15 | }
16 |
17 | .user-status-subheader {
18 | svg {
19 | transform: scale(1.27);
20 | margin-left: 4px;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/frontend/src/app/signUp/Organization/RequestTestResult.stories.tsx:
--------------------------------------------------------------------------------
1 | import { StoryFn, Meta } from "@storybook/react-webpack5";
2 |
3 | import RequestTestResult from "./RequestTestResult";
4 |
5 | export default {
6 | title: "App/Sign up/Step 2c: Request test results",
7 | component: RequestTestResult,
8 | argTypes: {},
9 | } as Meta;
10 |
11 | const Template: StoryFn = (args) => ;
12 |
13 | export const Default = Template.bind({});
14 | Default.args = {};
15 |
--------------------------------------------------------------------------------
/frontend/src/app/utils/number.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Returns a number from a value typically appended to the url path
3 | * @param pageNumber a string or number
4 | * @returns number or undefined if NaN
5 | */
6 | export const getNumberFromUrlPath = (pageNumber: string | number) => {
7 | if (typeof pageNumber === "string") {
8 | let parseIntVal = parseInt(pageNumber);
9 | return Number.isNaN(parseIntVal) ? undefined : parseIntVal;
10 | } else {
11 | return pageNumber;
12 | }
13 | };
14 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/properties/SupportEscalationProperties.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.properties;
2 |
3 | import lombok.Getter;
4 | import lombok.RequiredArgsConstructor;
5 | import org.springframework.boot.context.properties.ConfigurationProperties;
6 |
7 | @Getter
8 | @RequiredArgsConstructor
9 | @ConfigurationProperties(prefix = "simple-report.support-escalation")
10 | public class SupportEscalationProperties {
11 | private final String enabled;
12 | }
13 |
--------------------------------------------------------------------------------
/backend/src/main/resources/application-azure-training.yaml:
--------------------------------------------------------------------------------
1 | simple-report:
2 | patient-link-url: https://training.simplereport.gov/app/pxp?plid=
3 | twilio-callback-url: https://training.simplereport.gov/api/pxp/callback
4 | sendgrid:
5 | enabled: false
6 | cors:
7 | allowed-origins:
8 | - https://simple-report-api-training.azurewebsites.net
9 | - https://simple-report-training.azureedge.net
10 | - https://training.simplereport.gov
11 | twilio:
12 | enabled: false
13 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/PageNotFound.tsx:
--------------------------------------------------------------------------------
1 | import { useTranslation } from "react-i18next";
2 |
3 | const PageNotFound = () => {
4 | const { t } = useTranslation();
5 |
6 | return (
7 |
8 |
{t("common.pageNotFound.heading")}
9 |
{t("common.pageNotFound.text")}
10 |
{t("common.pageNotFound.errorCode")}
11 |
12 | );
13 | };
14 |
15 | export default PageNotFound;
16 |
--------------------------------------------------------------------------------
/.github/actions/stg-wait-for-slot-commit/action.yml:
--------------------------------------------------------------------------------
1 | name: Terraform Action wait for slot commit
2 | description: Build and push Docker image to the registry
3 | inputs:
4 | deploy_env:
5 | description: The environment to deploy to
6 | required: true
7 |
8 | runs:
9 | using: composite
10 | steps:
11 | - name: Wait for correct commit to be deployed in staging slot
12 | working-directory: ./ops
13 | shell: bash
14 | run: make wait-for-${{ inputs.deploy_env }}-slot-commit
15 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/UpdateSpecimenType.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model;
2 |
3 | import lombok.Builder;
4 | import lombok.Getter;
5 |
6 | @Getter
7 | @Builder
8 | public class UpdateSpecimenType {
9 | private final String name;
10 | private final String typeCode;
11 | private final String collectionLocationName;
12 | private final String collectionLocationCode;
13 |
14 | // can potentially add isDeleted here if needed in the future
15 | }
16 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/errors/AimsUploadException.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.errors;
2 |
3 | import java.io.Serial;
4 |
5 | public class AimsUploadException extends RuntimeException {
6 | @Serial private static final long serialVersionUID = 1L;
7 |
8 | public AimsUploadException(String message) {
9 | super(message);
10 | }
11 |
12 | public AimsUploadException(String message, Throwable t) {
13 | super(message, t);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/errors/InvalidTwilioCallbackException.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.errors;
2 |
3 | import org.springframework.http.HttpStatus;
4 | import org.springframework.web.bind.annotation.ResponseStatus;
5 |
6 | @ResponseStatus(code = HttpStatus.FORBIDDEN, reason = "The Twilio callback is invalid.")
7 | public class InvalidTwilioCallbackException extends RuntimeException {
8 | private static final long serialVersionUID = 1L;
9 | }
10 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/repository/DeletableEntityRepository.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.repository;
2 |
3 | import gov.cdc.usds.simplereport.db.model.AuditedEntity;
4 | import java.util.UUID;
5 | import org.springframework.data.repository.CrudRepository;
6 | import org.springframework.data.repository.NoRepositoryBean;
7 |
8 | @NoRepositoryBean
9 | public interface DeletableEntityRepository
10 | extends CrudRepository {}
11 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/person-with-last-test-result-query.graphql:
--------------------------------------------------------------------------------
1 | query getPatientsWithLastTestResult($namePrefixMatch: String = null) {
2 | patients(namePrefixMatch: $namePrefixMatch) {
3 | firstName
4 | lastName
5 | birthDate
6 | telephone
7 | lastTest {
8 | dateAdded
9 | results{
10 | disease{
11 | internalId
12 | name
13 | loinc
14 | }
15 | testResult
16 | }
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/set-current-user-tenant-data-access.graphql:
--------------------------------------------------------------------------------
1 | mutation SetCurrentUserTenantDataAccessOp(
2 | $organizationExternalId: String,
3 | $justification: String) {
4 | setCurrentUserTenantDataAccess(
5 | organizationExternalId: $organizationExternalId,
6 | justification: $justification
7 | ) {
8 | id,
9 | email,
10 | permissions,
11 | role,
12 | organization {
13 | name
14 | externalId
15 | }
16 | }
17 | }
--------------------------------------------------------------------------------
/ops/services/app_functions/test_data_publisher/functions/SendToAIMS/telemetry.ts:
--------------------------------------------------------------------------------
1 | import * as appInsights from "applicationinsights";
2 |
3 | let initialized = false;
4 |
5 | export function getTelemetry() {
6 | if (!initialized) {
7 | appInsights.setup().start();
8 | initialized = true;
9 | }
10 |
11 | const client = appInsights.defaultClient;
12 | if (!client) {
13 | throw new Error("Application Insights client failed to initialize");
14 | }
15 |
16 | return client;
17 | }
18 |
--------------------------------------------------------------------------------
/frontend/src/app/HealthChecks.tsx:
--------------------------------------------------------------------------------
1 | import { Route, Routes } from "react-router-dom";
2 |
3 | import DeploySmokeTest from "./DeploySmokeTest";
4 |
5 | const HealthChecks = () => (
6 |
7 | pong} />
8 | {process.env.REACT_APP_CURRENT_COMMIT}}
11 | />
12 | } />
13 |
14 | );
15 |
16 | export default HealthChecks;
17 |
--------------------------------------------------------------------------------
/frontend/src/app/accountCreation/MfaEmailVerify/MfaEmailVerify.stories.tsx:
--------------------------------------------------------------------------------
1 | import { StoryFn, Meta } from "@storybook/react-webpack5";
2 |
3 | import { MfaEmailVerify } from "./MfaEmailVerify";
4 |
5 | export default {
6 | title: "App/Account set up/Step 3b: Verify Email security code",
7 | component: MfaEmailVerify,
8 | argTypes: {},
9 | } as Meta;
10 |
11 | const Template: StoryFn = (args) => ;
12 |
13 | export const Default = Template.bind({});
14 | Default.args = {};
15 |
--------------------------------------------------------------------------------
/frontend/src/app/accountCreation/MfaOktaVerify/MfaOktaVerify.stories.tsx:
--------------------------------------------------------------------------------
1 | import { StoryFn, Meta } from "@storybook/react-webpack5";
2 |
3 | import { MfaOktaVerify } from "./MfaOktaVerify";
4 |
5 | export default {
6 | title: "App/Account set up/Step 3b: Verify Okta Verify security code",
7 | component: MfaOktaVerify,
8 | argTypes: {},
9 | } as Meta;
10 |
11 | const Template: StoryFn = (args) => ;
12 |
13 | export const Default = Template.bind({});
14 | Default.args = {};
15 |
--------------------------------------------------------------------------------
/frontend/src/app/accountCreation/SecurityQuestion/SecurityQuestion.stories.tsx:
--------------------------------------------------------------------------------
1 | import { StoryFn, Meta } from "@storybook/react-webpack5";
2 |
3 | import { SecurityQuestion } from "./SecurityQuestion";
4 |
5 | export default {
6 | title: "App/Account set up/Step 2: Security question",
7 | component: SecurityQuestion,
8 | argTypes: {},
9 | } as Meta;
10 |
11 | const Template: StoryFn = (args) => ;
12 |
13 | export const Default = Template.bind({});
14 | Default.args = {};
15 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/Page/Page.stories.tsx:
--------------------------------------------------------------------------------
1 | import { StoryFn, Meta } from "@storybook/react-webpack5";
2 |
3 | import Page from "./Page";
4 |
5 | export default {
6 | title: "Components/Page",
7 | component: Page,
8 | argTypes: {},
9 | } as Meta;
10 |
11 | const Template: StoryFn = () => ;
12 |
13 | export const WithChildren = Template.bind({});
14 | WithChildren.args = {
15 | children: (
16 | <>
17 | This is some test content
18 | >
19 | ),
20 | };
21 |
--------------------------------------------------------------------------------
/backend/src/main/resources/templates/waitlist-request.html:
--------------------------------------------------------------------------------
1 | A new SimpleReport waitlist request has been submitted with the following details:
2 |
3 | Name: [[${name}]]
4 | Email address: [[${email}]]
5 | Phone number: [[${phone}]]
6 | State: [[${state}]]
7 | Organization: [[${organization}]]
8 | Disease interest: [[${diseaseInterest}]]
9 | Additional conditions: [[${additionalConditions}]]
10 | Referral: [[${referral}]]
11 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/Optional.stories.tsx:
--------------------------------------------------------------------------------
1 | import { StoryFn, Meta } from "@storybook/react-webpack5";
2 |
3 | import Optional from "./Optional";
4 |
5 | export default {
6 | title: "Components/Form controls/Optional",
7 | component: Optional,
8 | args: {
9 | label: "Label",
10 | },
11 | } as Meta;
12 |
13 | type Props = React.ComponentProps;
14 |
15 | const Template: StoryFn = (args) => ;
16 |
17 | export const Default = Template.bind({});
18 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/RequiredMessage.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | import Required from "./Required";
4 |
5 | interface Props {
6 | message?: string;
7 | }
8 |
9 | const RequiredMessage = (props: Props) => {
10 | const message =
11 | props.message || "Required fields are marked with an asterisk";
12 |
13 | return (
14 |
15 | {message} (
16 | ).
17 |
18 | );
19 | };
20 |
21 | export default RequiredMessage;
22 |
--------------------------------------------------------------------------------
/frontend/src/app/supportAdmin/DeviceType/mocks/mockSupportedDiseaseTestPerformedMultiplex.ts:
--------------------------------------------------------------------------------
1 | import mockSupportedDiseaseTestPerformedCovid from "./mockSupportedDiseaseTestPerformedCovid";
2 | import mockSupportedDiseaseTestPerformedFlu from "./mockSupportedDiseaseTestPerformedFlu";
3 |
4 | const mockSupportedDiseaseTestPerformedMultiplex = [
5 | ...mockSupportedDiseaseTestPerformedCovid,
6 | ...mockSupportedDiseaseTestPerformedFlu,
7 | ];
8 |
9 | export default mockSupportedDiseaseTestPerformedMultiplex;
10 |
--------------------------------------------------------------------------------
/frontend/src/app/testResults/ResultsNav.test.tsx:
--------------------------------------------------------------------------------
1 | import { render } from "@testing-library/react";
2 | import { MemoryRouter } from "react-router-dom";
3 |
4 | import ResultsNav from "./ResultsNav";
5 |
6 | describe("ResultsNav", () => {
7 | it("displays the nav order correctly and defaults to 'Test Results'", () => {
8 | const { container } = render(
9 |
10 |
11 |
12 | );
13 | expect(container).toMatchSnapshot();
14 | });
15 | });
16 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/repository/FacilityFeatureFlagRepository.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.repository;
2 |
3 | import gov.cdc.usds.simplereport.db.model.FacilityFeatureFlag;
4 | import java.util.Optional;
5 | import java.util.UUID;
6 |
7 | public interface FacilityFeatureFlagRepository
8 | extends AuditedEntityRepository {
9 | Optional findFacilityFeatureFlagByFacilityIdAndName(
10 | UUID facilityId, String name);
11 | }
12 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/repository/TextMessageSentRepository.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.repository;
2 |
3 | import gov.cdc.usds.simplereport.db.model.TextMessageSent;
4 | import org.springframework.data.jpa.repository.EntityGraph;
5 |
6 | public interface TextMessageSentRepository extends AuditedEntityRepository {
7 | @EntityGraph(attributePaths = {"patientLink.testOrder.patient.phoneNumbers"})
8 | TextMessageSent findByTwilioMessageId(String id);
9 | }
10 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/organization-level-metrics.graphql:
--------------------------------------------------------------------------------
1 | query GetOrganizationLevelDashboardMetrics($startDate: DateTime!, $endDate: DateTime!) {
2 | organizationLevelDashboardMetrics(startDate: $startDate, endDate: $endDate) {
3 | organizationPositiveTestCount
4 | organizationNegativeTestCount
5 | organizationTotalTestCount
6 | facilityMetrics {
7 | facilityName,
8 | totalTestCount,
9 | positiveTestCount,
10 | negativeTestCount,
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/frontend/src/app/accountCreation/MfaOkta/MfaOkta.tsx:
--------------------------------------------------------------------------------
1 | import { AccountCreationApi } from "../AccountCreationApiService";
2 | import { MfaTotp } from "../MfaTotp/MfaTotp";
3 | import { useDocumentTitle } from "../../utils/hooks";
4 |
5 | export const MfaOkta = () => {
6 | useDocumentTitle("Set up authentication via the Okta Verify application");
7 |
8 | return (
9 | AccountCreationApi.enrollTotpMfa("Okta")}
12 | />
13 | );
14 | };
15 |
--------------------------------------------------------------------------------
/frontend/src/app/signUp/IdentityVerification/Success.test.tsx:
--------------------------------------------------------------------------------
1 | import { render, screen } from "@testing-library/react";
2 |
3 | import Success from "./Success";
4 |
5 | describe("Success", () => {
6 | it("renders", () => {
7 | render();
8 | expect(
9 | screen.getByText(
10 | "Congratulations, your identity has been verified successfully",
11 | { exact: false }
12 | )
13 | ).toBeInTheDocument();
14 | });
15 | });
16 |
--------------------------------------------------------------------------------
/frontend/src/app/utils/serviceWorkerHelper.ts:
--------------------------------------------------------------------------------
1 | export function isLocalHost(hostname?: string) {
2 | const regex = /^127(?:\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)){3}$/;
3 |
4 | return hostname
5 | ? Boolean(
6 | hostname === "localhost" ||
7 | // [::1] is the IPv6 localhost address.
8 | hostname === "[::1]" ||
9 | // 127.0.0.0/8 are considered localhost for IPv4.
10 | regex.exec(hostname)
11 | )
12 | : Boolean(window.location.hostname === "localhost");
13 | }
14 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/DeviceSpecimenTypeNewId.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model;
2 |
3 | import java.io.Serializable;
4 | import java.util.UUID;
5 | import lombok.AllArgsConstructor;
6 | import lombok.EqualsAndHashCode;
7 | import lombok.NoArgsConstructor;
8 |
9 | @AllArgsConstructor
10 | @NoArgsConstructor
11 | @EqualsAndHashCode
12 | public class DeviceSpecimenTypeNewId implements Serializable {
13 | private UUID deviceTypeId;
14 | private UUID specimenTypeId;
15 | }
16 |
--------------------------------------------------------------------------------
/frontend/.env:
--------------------------------------------------------------------------------
1 | REACT_APP_TITLE=SimpleReport
2 | REACT_APP_DESCRIPTION="SimpleReport Test Management Application"
3 | REACT_APP_ICON=usds-32x32.png
4 | REACT_APP_BACKEND_URL=https://simplereport.gov/
5 | REACT_APP_BASE_URL=https://simplereport.gov/
6 | REACT_APP_IS_TRAINING_SITE=false
7 | INLINE_RUNTIME_CHUNK=false
8 | REACT_APP_CONTENT_SECURITY_POLICY_DEFAULT_SRC="default-src 'self';"
9 | REACT_APP_CONTENT_SECURITY_POLICY_SCRIPT_SRC="script-src 'self' dap.digitalgov.gov www.google-analytics.com touchpoints.app.cloud.gov;"
10 |
--------------------------------------------------------------------------------
/frontend/src/scss/components/_card.scss:
--------------------------------------------------------------------------------
1 | @use "../settings" as *;
2 |
3 | @mixin card($border-radius, $padding: 0) {
4 | @include u-padding($padding);
5 | background: color("white");
6 | border-width: units("2px");
7 | border-color: color("base-lighter");
8 | border-style: solid;
9 | border-radius: units($border-radius);
10 | }
11 |
12 | .card {
13 | @include card($border-radius: 0.5, $padding: $theme-card-padding-perimeter);
14 | }
15 |
16 | .card-container {
17 | @include card($border-radius: 1);
18 | }
19 |
--------------------------------------------------------------------------------
/backend/db-setup/migrate-devices.sql:
--------------------------------------------------------------------------------
1 | UPDATE simple_report.device_type
2 | SET loinc_code = '94534-5'
3 | WHERE name='Abbott IDNow';
4 |
5 | UPDATE simple_report.device_type
6 | SET model = 'BinaxNOW COVID-19 Ag Card'
7 | WHERE name='Abbott BinaxNow';
8 |
9 | UPDATE simple_report.device_type
10 | SET loinc_code = '95209-3'
11 | WHERE name='Quidel Sofia 2';
12 |
13 | UPDATE simple_report.device_type
14 | SET manufacturer = 'LumiraDx UK Ltd.', model = 'LumiraDx SARS-CoV-2 Ag Test*', loinc_code = '95209-3'
15 | WHERE name='LumiraDX';
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/errors/InvalidTwilioMessageIdentifierException.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.errors;
2 |
3 | import org.springframework.http.HttpStatus;
4 | import org.springframework.web.bind.annotation.ResponseStatus;
5 |
6 | @ResponseStatus(code = HttpStatus.FORBIDDEN, reason = "The Twilio message identifier is invalid.")
7 | public class InvalidTwilioMessageIdentifierException extends RuntimeException {
8 | private static final long serialVersionUID = 1L;
9 | }
10 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/useraccountcreation/UserAccountStatus.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.useraccountcreation;
2 |
3 | public enum UserAccountStatus {
4 | ACTIVE,
5 | PENDING_ACTIVATION,
6 | PASSWORD_RESET,
7 | SET_SECURITY_QUESTIONS,
8 | MFA_SELECT,
9 | SMS_PENDING_ACTIVATION,
10 | CALL_PENDING_ACTIVATION,
11 | EMAIL_PENDING_ACTIVATION,
12 | GOOGLE_PENDING_ACTIVATION,
13 | OKTA_PENDING_ACTIVATION,
14 | FIDO_PENDING_ACTIVATION,
15 | UNKNOWN
16 | }
17 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/test-result-query.graphql:
--------------------------------------------------------------------------------
1 | query GetResultById($id: ID!) {
2 | testResult(id: $id) {
3 | internalId
4 | dateTested
5 | results{
6 | disease{
7 | internalId
8 | name
9 | loinc
10 | }
11 | testResult
12 | }
13 | deviceType {
14 | internalId
15 | name
16 | }
17 | patient {
18 | internalId
19 | firstName
20 | middleName
21 | lastName
22 | lookupId
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/frontend/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React App",
3 | "name": "PRIME Data Input Prototype",
4 | "icons": [
5 | {
6 | "src": "usds-32x32.png",
7 | "sizes": "32x32",
8 | "type": "image/png"
9 | },
10 | {
11 | "src": "optimus_prime.svg",
12 | "sizes": "192x192 64x64 32x32 24x24 16x16",
13 | "type": "image/svg+xml"
14 | }
15 | ],
16 | "start_url": ".",
17 | "display": "standalone",
18 | "theme_color": "#000000",
19 | "background_color": "#ffffff"
20 | }
21 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/errors/InvalidPatientLinkException.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.errors;
2 |
3 | import org.springframework.http.HttpStatus;
4 | import org.springframework.web.bind.annotation.ResponseStatus;
5 |
6 | @ResponseStatus(
7 | code = HttpStatus.NOT_FOUND,
8 | reason = "No patient link with the supplied ID was found.")
9 | public class InvalidPatientLinkException extends RuntimeException {
10 | private static final long serialVersionUID = 1L;
11 | }
12 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/CardBackground/CardBackground.tsx:
--------------------------------------------------------------------------------
1 | import "./CardBackground.scss";
2 |
3 | export type CardContainerProps = {
4 | children?: React.ReactNode;
5 | };
6 |
7 | export const CardBackground: React.FC = ({ children }) => {
8 | return (
9 |
10 |
11 | {children}
12 |
13 |
14 | );
15 | };
16 |
17 | export default CardBackground;
18 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/config/authorization/NamedPrincipal.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.config.authorization;
2 |
3 | import java.security.Principal;
4 |
5 | abstract class NamedPrincipal implements Principal {
6 | private final String name;
7 |
8 | NamedPrincipal(String name) {
9 | this.name = name;
10 | }
11 |
12 | @Override
13 | public String getName() {
14 | return name;
15 | }
16 |
17 | @Override
18 | public String toString() {
19 | return getName();
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/config/authorization/TenantDataAuthenticationProvider.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.config.authorization;
2 |
3 | import java.util.Set;
4 | import org.springframework.security.core.Authentication;
5 | import org.springframework.security.core.GrantedAuthority;
6 |
7 | @FunctionalInterface
8 | public interface TenantDataAuthenticationProvider {
9 |
10 | Authentication generateToken(
11 | String username, Authentication currentAuth, Set authorities);
12 | }
13 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/HashLink.tsx:
--------------------------------------------------------------------------------
1 | import { Link, useLocation } from "react-router-dom";
2 | import React, { ReactNode } from "react";
3 |
4 | interface Props {
5 | pathname: string;
6 | hash?: string;
7 | children: ReactNode;
8 | }
9 |
10 | export const HashLink = ({ children, hash, pathname, ...props }: Props) => {
11 | const { search } = useLocation();
12 |
13 | return (
14 |
15 | {children}
16 |
17 | );
18 | };
19 |
--------------------------------------------------------------------------------
/frontend/src/app/testResults/ResultsNavWrapper.tsx:
--------------------------------------------------------------------------------
1 | import React, { ReactElement } from "react";
2 |
3 | import ResultsNav from "./ResultsNav";
4 |
5 | type Props = {
6 | children: ReactElement;
7 | };
8 |
9 | const ResultsNavWrapper = ({ children }: Props) => {
10 | return (
11 |
12 |
13 |
14 | {children}
15 |
16 |
17 | );
18 | };
19 |
20 | export default ResultsNavWrapper;
21 |
--------------------------------------------------------------------------------
/frontend/src/app/testResults/mocks/resultForText.ts:
--------------------------------------------------------------------------------
1 | const resultForText = {
2 | dateTested: "2022-09-30T12:16:50.064Z",
3 | patient: {
4 | firstName: "Boban",
5 | middleName: null,
6 | lastName: "L",
7 | birthDate: "2021-11-17",
8 | phoneNumbers: [
9 | {
10 | type: "MOBILE",
11 | number: "(248) 555-1234",
12 | __typename: "PhoneNumber",
13 | },
14 | ],
15 | __typename: "Patient",
16 | },
17 | __typename: "TestResult",
18 | };
19 |
20 | export default resultForText;
21 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/useraccountcreation/EnrollMfaRequest.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.useraccountcreation;
2 |
3 | import com.fasterxml.jackson.annotation.JsonProperty;
4 | import jakarta.validation.constraints.NotNull;
5 | import jakarta.validation.constraints.Size;
6 | import lombok.Getter;
7 |
8 | @Getter
9 | public class EnrollMfaRequest {
10 | @Size(max = RequestConstants.STANDARD_REQUEST_STRING_LIMIT)
11 | @JsonProperty
12 | @NotNull
13 | private String userInput;
14 | }
15 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/useraccountcreation/SetPasswordRequest.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.useraccountcreation;
2 |
3 | import com.fasterxml.jackson.annotation.JsonProperty;
4 | import jakarta.validation.constraints.NotNull;
5 | import jakarta.validation.constraints.Size;
6 | import lombok.Getter;
7 |
8 | @Getter
9 | public class SetPasswordRequest {
10 | @Size(max = RequestConstants.LARGE_REQUEST_STRING_LIMIT)
11 | @NotNull
12 | @JsonProperty
13 | private String password;
14 | }
15 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/repository/TimeOfConsentRepository.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.repository;
2 |
3 | import gov.cdc.usds.simplereport.db.model.PatientLink;
4 | import gov.cdc.usds.simplereport.db.model.TimeOfConsent;
5 | import java.util.List;
6 | import java.util.UUID;
7 | import org.springframework.data.repository.CrudRepository;
8 |
9 | public interface TimeOfConsentRepository extends CrudRepository {
10 | List findAllByPatientLink(PatientLink pl);
11 | }
12 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/Card/CardLogoHeader.tsx:
--------------------------------------------------------------------------------
1 | import siteLogo from "../../../img/simplereport-logo-color.svg";
2 |
3 | export const CardLogoHeader: React.FC = () => {
4 | return (
5 |
6 |
11 |
12 |
13 | );
14 | };
15 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/Page/Page.test.tsx:
--------------------------------------------------------------------------------
1 | import { render, screen } from "@testing-library/react";
2 |
3 | import Page from "./Page";
4 |
5 | describe("Page", () => {
6 | describe("No children", () => {
7 | it("renders", () => {
8 | expect().toMatchSnapshot();
9 | });
10 | });
11 | describe("With children", () => {
12 | it("displays children", () => {
13 | render(Hello World);
14 | expect(screen.getByText("Hello World")).toBeInTheDocument();
15 | });
16 | });
17 | });
18 |
--------------------------------------------------------------------------------
/frontend/src/app/uploads/DeviceLookup/DeviceLookup.scss:
--------------------------------------------------------------------------------
1 | .device-lookup-container {
2 | .copy-button {
3 | margin-left: 1em;
4 | }
5 |
6 | .text-field {
7 | position: relative;
8 | max-width: 36em;
9 | }
10 |
11 | .usa-table {
12 | margin-top: 0.5rem;
13 | }
14 |
15 | .copy-button-container {
16 | display: flex;
17 | justify-content: center;
18 | align-items: center;
19 | }
20 |
21 | .copy-button-tooltip {
22 | bottom: 12px;
23 | right: 15px;
24 | position: absolute;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/ops/services/app_functions/test_data_publisher/functions/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "CommonJS",
4 | "esModuleInterop": true,
5 | "moduleResolution": "node",
6 | "target": "ES6",
7 | "outDir": "dist",
8 | "rootDir": ".",
9 | "sourceMap": true,
10 | "strict": false,
11 | "forceConsistentCasingInFileNames": true,
12 | "allowJs": false,
13 | "skipLibCheck": true,
14 | "allowSyntheticDefaultImports": true
15 | },
16 | "exclude": ["node_modules", "**/*.test.ts"]
17 | }
18 |
--------------------------------------------------------------------------------
/ops/services/pagerduty/_var.tf:
--------------------------------------------------------------------------------
1 | variable "resource_group_name" {
2 | description = "The name of the resource group where we will create Azure resources"
3 | type = string
4 | }
5 |
6 | variable "pagerduty_service_name" {
7 | description = "The name of the PagerDuty service we will send things to"
8 | type = string
9 | }
10 |
11 | variable "action_group_short_name" {
12 | description = "The short name (very short!) of the action group we are creating."
13 | type = string
14 | default = "SR-ALERTS"
15 | }
16 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/OrganizationLevelDashboardMetrics.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model;
2 |
3 | import java.util.List;
4 | import lombok.AllArgsConstructor;
5 | import lombok.Getter;
6 |
7 | @AllArgsConstructor
8 | @Getter
9 | public class OrganizationLevelDashboardMetrics {
10 | private long organizationPositiveTestCount;
11 | private long organizationNegativeTestCount;
12 | private long organizationTotalTestCount;
13 | private List facilityMetrics;
14 | }
15 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/service/errors/InvalidBulkTestResultUploadException.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.service.errors;
2 |
3 | import org.springframework.http.HttpStatus;
4 | import org.springframework.web.bind.annotation.ResponseStatus;
5 |
6 | @ResponseStatus(
7 | code = HttpStatus.NOT_FOUND,
8 | reason = "No upload result with the supplied ID was found.")
9 | public class InvalidBulkTestResultUploadException extends RuntimeException {
10 | private static final long serialVersionUID = 1L;
11 | }
12 |
--------------------------------------------------------------------------------
/frontend/src/app/Settings/Users/UserDetailUtils.tsx:
--------------------------------------------------------------------------------
1 | import { OktaUserStatus } from "../../utils/user";
2 | import { User } from "../../../generated/graphql";
3 |
4 | import { SettingsUser } from "./ManageUsersContainer";
5 |
6 | export const isUserActive = (user: SettingsUser | User) =>
7 | user.status !== OktaUserStatus.SUSPENDED &&
8 | user.status !== OktaUserStatus.PROVISIONED &&
9 | !user.isDeleted;
10 | export const isUserSelf = (
11 | user: { id: string },
12 | loggedInUser: { id: string }
13 | ) => user.id === loggedInUser.id;
14 |
--------------------------------------------------------------------------------
/frontend/src/app/supportAdmin/DeviceType/mocks/mockSupportedDiseaseTestPerformedHIV.ts:
--------------------------------------------------------------------------------
1 | const mockSupportedDiseaseTestPerformedHIV = [
2 | {
3 | supportedDisease: {
4 | internalId: "49248233-1780-4303-b5fe-05c1d3f34ab7",
5 | loinc: "LP17126-1",
6 | name: "HIV",
7 | },
8 | testPerformedLoincCode: "80387-4",
9 | equipmentUid: "HivEquipmentUid123",
10 | testkitNameId: "HivTestkitNameId123",
11 | testOrderedLoincCode: "80387-5",
12 | },
13 | ];
14 |
15 | export default mockSupportedDiseaseTestPerformedHIV;
16 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/AddFacilityInput.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model;
2 |
3 | import java.util.List;
4 | import java.util.UUID;
5 | import lombok.Builder;
6 | import lombok.Getter;
7 |
8 | @Getter
9 | @Builder
10 | public class AddFacilityInput {
11 | private String facilityName;
12 | private String cliaNumber;
13 | private AddressInput address;
14 | private String phone;
15 | private String email;
16 | private ProviderInput orderingProvider;
17 | private List deviceIds;
18 | }
19 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/SubmissionSummary.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | import gov.cdc.usds.simplereport.db.model.Organization;
4 | import gov.cdc.usds.simplereport.service.model.GenericResponse;
5 | import java.util.HashMap;
6 | import java.util.UUID;
7 |
8 | public interface SubmissionSummary {
9 | UUID submissionId();
10 |
11 | Organization org();
12 |
13 | GenericResponse submissionResponse();
14 |
15 | HashMap reportedDiseases();
16 | }
17 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/utils/AsyncLoggingUtils.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.utils;
2 |
3 | import java.util.Map;
4 | import java.util.function.Supplier;
5 | import org.slf4j.MDC;
6 |
7 | public class AsyncLoggingUtils {
8 |
9 | private AsyncLoggingUtils() {}
10 |
11 | public static Supplier withMDC(Supplier supplier) {
12 | Map mdc = MDC.getCopyOfContextMap();
13 | return () -> {
14 | MDC.setContextMap(mdc);
15 | return supplier.get();
16 | };
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/backend/src/test/resources/fhir/practitioner.json:
--------------------------------------------------------------------------------
1 | {
2 | "resourceType" : "Practitioner",
3 | "id": "3c9c7370-e2e3-49ad-bb7a-f6005f41cf29",
4 | "name" : [ {
5 | "family" : "Earhart",
6 | "given" : [ "Amelia", "Mary" ]
7 | } ],
8 | "telecom" : [ {
9 | "system" : "phone",
10 | "value" : "(248) 555 1234",
11 | "use" : "work"
12 | } ],
13 | "address" : [ {
14 | "line" : [ "223 N Terrace St" ],
15 | "city" : "Atchison",
16 | "state" : "KS",
17 | "postalCode" : "66002",
18 | "country": "USA"
19 | } ]
20 | }
--------------------------------------------------------------------------------
/frontend/.env.development:
--------------------------------------------------------------------------------
1 | REACT_APP_TITLE=SimpleReport
2 | REACT_APP_BACKEND_URL=http://localhost:8080
3 | REACT_APP_BASE_URL=http://localhost:3000
4 | INLINE_RUNTIME_CHUNK=false
5 | REACT_APP_CONTENT_SECURITY_POLICY_DEFAULT_SRC=
6 | REACT_APP_CONTENT_SECURITY_POLICY_SCRIPT_SRC=
7 | REACT_APP_TEST_TRIBAL_AFFILIATION_BYPASS=true
8 | REACT_APP_OKTA_ENABLED=false
9 | REACT_APP_OKTA_URL=https://hhs-prime.oktapreview.com
10 | REACT_APP_OKTA_CLIENT_ID=0oa1k0163nAwfVxNW1d7
11 | REACT_APP_OKTA_SCOPE=simple_report_dev
12 | REACT_APP_OKTA_TOKEN_ROLE_CLAIM=dev_roles
--------------------------------------------------------------------------------
/ops/services/virtual_network/_output.tf:
--------------------------------------------------------------------------------
1 | output "subnet_lbs_id" {
2 | value = azurerm_subnet.lbs.id
3 | }
4 |
5 | output "subnet_webapp_id" {
6 | value = azurerm_subnet.webapp.id
7 | }
8 |
9 | output "subnet_db_id" {
10 | value = azurerm_subnet.db.id
11 | }
12 |
13 | output "subnet_container_instances_id" {
14 | value = azurerm_subnet.container_instances.id
15 | }
16 |
17 | output "private_dns_zone_id" {
18 | value = azurerm_private_dns_zone.default.id
19 | }
20 |
21 | output "network" {
22 | value = azurerm_virtual_network.vn
23 | }
24 |
--------------------------------------------------------------------------------
/backend/Dockerfile.db-liquibase-action:
--------------------------------------------------------------------------------
1 | FROM gradle:8.14.3-jdk17 AS build
2 |
3 | WORKDIR /home/gradle/graphql-api
4 |
5 | COPY .git .git
6 |
7 | WORKDIR /home/gradle/graphql-api/backend
8 |
9 | COPY ./backend/gradle ./gradle
10 | COPY ./backend/*.gradle ./
11 | COPY ./backend/config ./config
12 | COPY ./backend/src ./src
13 | COPY ./backend/gradle.properties gradle.properties
14 | COPY ./backend/db_liquibase_action.sh db_liquibase_action.sh
15 |
16 | RUN chown -R gradle:gradle .
17 |
18 | USER gradle
19 |
20 | ENTRYPOINT ["./db_liquibase_action.sh"]
21 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/errors/BulkUploadDisabledException.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.errors;
2 |
3 | import org.springframework.http.HttpStatus;
4 | import org.springframework.web.bind.annotation.ResponseStatus;
5 |
6 | /** An error thrown when bulk upload is disabled */
7 | @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
8 | public class BulkUploadDisabledException extends RuntimeException {
9 |
10 | public BulkUploadDisabledException(String message) {
11 | super(message);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/useraccountcreation/ActivateAccountRequest.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.useraccountcreation;
2 |
3 | import com.fasterxml.jackson.annotation.JsonProperty;
4 | import jakarta.validation.constraints.NotNull;
5 | import jakarta.validation.constraints.Size;
6 | import lombok.Getter;
7 |
8 | @Getter
9 | public class ActivateAccountRequest {
10 | @Size(max = RequestConstants.LARGE_REQUEST_STRING_LIMIT)
11 | @NotNull
12 | @JsonProperty
13 | private String activationToken;
14 | }
15 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/service/errors/InvalidRSAPrivateKeyException.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.service.errors;
2 |
3 | import org.springframework.http.HttpStatus;
4 | import org.springframework.web.bind.annotation.ResponseStatus;
5 |
6 | @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
7 | public class InvalidRSAPrivateKeyException extends RuntimeException {
8 | private static final long serialVersionUID = 1L;
9 |
10 | public InvalidRSAPrivateKeyException(Throwable cause) {
11 | super(cause);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/frontend/src/app/supportAdmin/SupportAdmin.test.tsx:
--------------------------------------------------------------------------------
1 | import { render } from "@testing-library/react";
2 | import { MemoryRouter } from "react-router-dom";
3 |
4 | import SupportAdmin from "./SupportAdmin";
5 |
6 | describe("SupportAdmin", () => {
7 | const renderWithRouter = () =>
8 | render(
9 |
10 |
11 |
12 | );
13 |
14 | it("loads menu categories", () => {
15 | const { container } = renderWithRouter();
16 | expect(container).toMatchSnapshot();
17 | });
18 | });
19 |
--------------------------------------------------------------------------------
/ops/demo/_config.tf:
--------------------------------------------------------------------------------
1 | terraform {
2 | backend "azurerm" {
3 | resource_group_name = "prime-simple-report-test"
4 | storage_account_name = "usdssimplereportglobal"
5 | container_name = "sr-tfstate"
6 | key = "demo/terraform.tfstate"
7 | }
8 | required_providers {
9 | azurerm = {
10 | source = "hashicorp/azurerm"
11 | version = "~> 3.100.0"
12 | }
13 | }
14 | required_version = "~> 1.9.6"
15 | }
16 |
17 | provider "azurerm" {
18 | features {}
19 | skip_provider_registration = true
20 | }
21 |
--------------------------------------------------------------------------------
/ops/dev/_config.tf:
--------------------------------------------------------------------------------
1 | terraform {
2 | backend "azurerm" {
3 | resource_group_name = "prime-simple-report-test"
4 | storage_account_name = "usdssimplereportglobal"
5 | container_name = "sr-tfstate"
6 | key = "dev/terraform.tfstate"
7 | }
8 | required_providers {
9 | azurerm = {
10 | source = "hashicorp/azurerm"
11 | version = "~> 3.100.0"
12 | }
13 | }
14 | required_version = "~> 1.9.6"
15 | }
16 |
17 | provider "azurerm" {
18 | features {}
19 | skip_provider_registration = true
20 | }
21 |
--------------------------------------------------------------------------------
/ops/dev2/_config.tf:
--------------------------------------------------------------------------------
1 | terraform {
2 | backend "azurerm" {
3 | resource_group_name = "prime-simple-report-test"
4 | storage_account_name = "usdssimplereportglobal"
5 | container_name = "sr-tfstate"
6 | key = "dev2/terraform.tfstate"
7 | }
8 | required_providers {
9 | azurerm = {
10 | source = "hashicorp/azurerm"
11 | version = "~> 3.100.0"
12 | }
13 | }
14 | required_version = "~> 1.9.6"
15 | }
16 |
17 | provider "azurerm" {
18 | features {}
19 | skip_provider_registration = true
20 | }
21 |
--------------------------------------------------------------------------------
/ops/dev3/_config.tf:
--------------------------------------------------------------------------------
1 | terraform {
2 | backend "azurerm" {
3 | resource_group_name = "prime-simple-report-test"
4 | storage_account_name = "usdssimplereportglobal"
5 | container_name = "sr-tfstate"
6 | key = "dev3/terraform.tfstate"
7 | }
8 | required_providers {
9 | azurerm = {
10 | source = "hashicorp/azurerm"
11 | version = "~> 3.100.0"
12 | }
13 | }
14 | required_version = "~> 1.9.6"
15 | }
16 |
17 | provider "azurerm" {
18 | features {}
19 | skip_provider_registration = true
20 | }
21 |
--------------------------------------------------------------------------------
/ops/dev4/_config.tf:
--------------------------------------------------------------------------------
1 | terraform {
2 | backend "azurerm" {
3 | resource_group_name = "prime-simple-report-test"
4 | storage_account_name = "usdssimplereportglobal"
5 | container_name = "sr-tfstate"
6 | key = "dev4/terraform.tfstate"
7 | }
8 | required_providers {
9 | azurerm = {
10 | source = "hashicorp/azurerm"
11 | version = "~> 3.100.0"
12 | }
13 | }
14 | required_version = "~> 1.9.6"
15 | }
16 |
17 | provider "azurerm" {
18 | features {}
19 | skip_provider_registration = true
20 | }
21 |
--------------------------------------------------------------------------------
/ops/dev5/_config.tf:
--------------------------------------------------------------------------------
1 | terraform {
2 | backend "azurerm" {
3 | resource_group_name = "prime-simple-report-test"
4 | storage_account_name = "usdssimplereportglobal"
5 | container_name = "sr-tfstate"
6 | key = "dev5/terraform.tfstate"
7 | }
8 | required_providers {
9 | azurerm = {
10 | source = "hashicorp/azurerm"
11 | version = "~> 3.100.0"
12 | }
13 | }
14 | required_version = "~> 1.9.6"
15 | }
16 |
17 | provider "azurerm" {
18 | features {}
19 | skip_provider_registration = true
20 | }
21 |
--------------------------------------------------------------------------------
/ops/dev6/_config.tf:
--------------------------------------------------------------------------------
1 | terraform {
2 | backend "azurerm" {
3 | resource_group_name = "prime-simple-report-test"
4 | storage_account_name = "usdssimplereportglobal"
5 | container_name = "sr-tfstate"
6 | key = "dev6/terraform.tfstate"
7 | }
8 | required_providers {
9 | azurerm = {
10 | source = "hashicorp/azurerm"
11 | version = "~> 3.100.0"
12 | }
13 | }
14 | required_version = "~> 1.9.6"
15 | }
16 |
17 | provider "azurerm" {
18 | features {}
19 | skip_provider_registration = true
20 | }
21 |
--------------------------------------------------------------------------------
/ops/prod/_config.tf:
--------------------------------------------------------------------------------
1 | terraform {
2 | backend "azurerm" {
3 | resource_group_name = "prime-simple-report-test"
4 | storage_account_name = "usdssimplereportglobal"
5 | container_name = "sr-tfstate"
6 | key = "prod/terraform.tfstate"
7 | }
8 | required_providers {
9 | azurerm = {
10 | source = "hashicorp/azurerm"
11 | version = "~> 3.100.0"
12 | }
13 | }
14 | required_version = "~> 1.9.6"
15 | }
16 |
17 | provider "azurerm" {
18 | features {}
19 | skip_provider_registration = true
20 | }
21 |
--------------------------------------------------------------------------------
/ops/services/app_functions/report_stream_batched_publisher/functions/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "CommonJS",
4 | "esModuleInterop": true,
5 | "moduleResolution": "node",
6 | "target": "ES6",
7 | "outDir": "dist",
8 | "rootDir": ".",
9 | "sourceMap": true,
10 | "strict": false,
11 | "forceConsistentCasingInFileNames": true,
12 | "allowJs": false,
13 | "skipLibCheck": true,
14 | "allowSyntheticDefaultImports": true
15 | },
16 | "exclude": ["node_modules", "**/*.test.ts"]
17 | }
18 |
--------------------------------------------------------------------------------
/ops/stg/_config.tf:
--------------------------------------------------------------------------------
1 | terraform {
2 | backend "azurerm" {
3 | resource_group_name = "prime-simple-report-test"
4 | storage_account_name = "usdssimplereportglobal"
5 | container_name = "sr-tfstate"
6 | key = "stg/terraform.tfstate"
7 | }
8 | required_providers {
9 | azurerm = {
10 | source = "hashicorp/azurerm"
11 | version = "~> 3.100.0"
12 | }
13 | }
14 | required_version = "~> 1.9.6"
15 | }
16 |
17 | provider "azurerm" {
18 | features {}
19 | skip_provider_registration = true
20 | }
21 |
--------------------------------------------------------------------------------
/ops/test/_config.tf:
--------------------------------------------------------------------------------
1 | terraform {
2 | backend "azurerm" {
3 | resource_group_name = "prime-simple-report-test"
4 | storage_account_name = "usdssimplereportglobal"
5 | container_name = "sr-tfstate"
6 | key = "test/terraform.tfstate"
7 | }
8 | required_providers {
9 | azurerm = {
10 | source = "hashicorp/azurerm"
11 | version = "~> 3.100.0"
12 | }
13 | }
14 | required_version = "~> 1.9.6"
15 | }
16 |
17 | provider "azurerm" {
18 | features {}
19 | skip_provider_registration = true
20 | }
21 |
--------------------------------------------------------------------------------
/backend/src/test/resources/graphql-test/add-to-queue-with-symptoms.graphql:
--------------------------------------------------------------------------------
1 | mutation enqueueById($id: ID!, $facilityId: ID!, $symptomOnsetDate: LocalDate, $testResultDelivery: TestResultDeliveryPreference, $pregnancy: String, $symptoms: String, $noSymptoms: Boolean) {
2 | addPatientToQueue(
3 | patientId: $id,
4 | facilityId: $facilityId,
5 | pregnancy: $pregnancy,
6 | symptoms: $symptoms,
7 | symptomOnset: $symptomOnsetDate,
8 | testResultDelivery: $testResultDelivery,
9 | noSymptoms: $noSymptoms
10 | )
11 | }
--------------------------------------------------------------------------------
/frontend/src/app/accountCreation/MfaGoogleAuthVerify/MfaGoogleAuthVerify.stories.tsx:
--------------------------------------------------------------------------------
1 | import { StoryFn, Meta } from "@storybook/react-webpack5";
2 |
3 | import { MfaGoogleAuthVerify } from "./MfaGoogleAuthVerify";
4 |
5 | export default {
6 | title:
7 | "App/Account set up/Step 3b: Verify Google Authenticator security code",
8 | component: MfaGoogleAuthVerify,
9 | argTypes: {},
10 | } as Meta;
11 |
12 | const Template: StoryFn = (args) => ;
13 |
14 | export const Default = Template.bind({});
15 | Default.args = {};
16 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/Required.stories.tsx:
--------------------------------------------------------------------------------
1 | import { StoryFn, Meta } from "@storybook/react-webpack5";
2 |
3 | import Required from "./Required";
4 |
5 | export default {
6 | title: "Components/Form controls/Required",
7 | component: Required,
8 | } as Meta;
9 |
10 | type Props = React.ComponentProps;
11 |
12 | const Template: StoryFn = (args) => ;
13 |
14 | export const Default = Template.bind({});
15 |
16 | export const WithLabel = Template.bind({});
17 | WithLabel.args = { label: "Label" };
18 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/TestResultGuidance/ChlamydiaResultGuidance.test.tsx:
--------------------------------------------------------------------------------
1 | import { render, screen } from "@testing-library/react";
2 |
3 | import "../../../i18n";
4 |
5 | import ChlamydiaResultGuidance from "./ChlamydiaResultGuidance";
6 |
7 | describe("ChlamydiaResultGuidance", () => {
8 | it("displays guidance for a Chlamydia result", () => {
9 | const { container } = render();
10 | expect(screen.getByText("For Chlamydia:")).toBeInTheDocument();
11 | expect(container).toMatchSnapshot();
12 | });
13 | });
14 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/TestResultGuidance/GonorrheaResultGuidance.test.tsx:
--------------------------------------------------------------------------------
1 | import { render, screen } from "@testing-library/react";
2 |
3 | import "../../../i18n";
4 |
5 | import GonorrheaResultGuidance from "./GonorrheaResultGuidance";
6 |
7 | describe("GonorrheaResultGuidance", () => {
8 | it("displays guidance for a Gonorrhea result", () => {
9 | const { container } = render();
10 | expect(screen.getByText("For Gonorrhea:")).toBeInTheDocument();
11 | expect(container).toMatchSnapshot();
12 | });
13 | });
14 |
--------------------------------------------------------------------------------
/.github/actions/build-test-data-publisher-function-app/action.yml:
--------------------------------------------------------------------------------
1 | name: Build test data publisher functions
2 | description: Build local package file for functions in test data publisher function app
3 | runs:
4 | using: composite
5 | steps:
6 | - uses: actions/setup-node@v4
7 | with:
8 | node-version: 20
9 | - name: Build function source bundle
10 | shell: bash
11 | working-directory: ./ops/services/app_functions/test_data_publisher/functions
12 | run: |
13 | echo "Build function"
14 | yarn build:production
15 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/errors/InvalidPatientSelfRegistrationLinkException.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.errors;
2 |
3 | import org.springframework.http.HttpStatus;
4 | import org.springframework.web.bind.annotation.ResponseStatus;
5 |
6 | @ResponseStatus(
7 | code = HttpStatus.NOT_FOUND,
8 | reason = "No registration link with the supplied ID was found.")
9 | public class InvalidPatientSelfRegistrationLinkException extends RuntimeException {
10 | private static final long serialVersionUID = 1L;
11 | }
12 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/uploads/PatientBulkUploadResponse.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.uploads;
2 |
3 | import gov.cdc.usds.simplereport.db.model.auxiliary.UploadStatus;
4 | import gov.cdc.usds.simplereport.service.model.reportstream.FeedbackMessage;
5 | import lombok.Getter;
6 | import lombok.NoArgsConstructor;
7 | import lombok.Setter;
8 |
9 | @NoArgsConstructor
10 | @Getter
11 | @Setter
12 | public class PatientBulkUploadResponse {
13 |
14 | private FeedbackMessage[] errors;
15 | private UploadStatus status;
16 | }
17 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/service/errors/NobodyAuthenticatedException.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.service.errors;
2 |
3 | import org.springframework.http.HttpStatus;
4 | import org.springframework.web.bind.annotation.ResponseStatus;
5 |
6 | @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
7 | public class NobodyAuthenticatedException extends RuntimeException {
8 | private static final long serialVersionUID = 1L;
9 |
10 | public NobodyAuthenticatedException() {
11 | super("Nobody is currently authenticated");
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/ops/pentest/_config.tf:
--------------------------------------------------------------------------------
1 | terraform {
2 | backend "azurerm" {
3 | resource_group_name = "prime-simple-report-test"
4 | storage_account_name = "usdssimplereportglobal"
5 | container_name = "sr-tfstate"
6 | key = "pentest/terraform.tfstate"
7 | }
8 | required_providers {
9 | azurerm = {
10 | source = "hashicorp/azurerm"
11 | version = "~> 3.100.0"
12 | }
13 | }
14 | required_version = "~> 1.9.6"
15 | }
16 |
17 | provider "azurerm" {
18 | features {}
19 | skip_provider_registration = true
20 | }
21 |
--------------------------------------------------------------------------------
/ops/training/_config.tf:
--------------------------------------------------------------------------------
1 | terraform {
2 | backend "azurerm" {
3 | resource_group_name = "prime-simple-report-test"
4 | storage_account_name = "usdssimplereportglobal"
5 | container_name = "sr-tfstate"
6 | key = "training/terraform.tfstate"
7 | }
8 | required_providers {
9 | azurerm = {
10 | source = "hashicorp/azurerm"
11 | version = "~> 3.100.0"
12 | }
13 | }
14 | required_version = "~> 1.9.6"
15 | }
16 |
17 | provider "azurerm" {
18 | features {}
19 | skip_provider_registration = true
20 | }
21 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/api/model/errors/DependencyFailureException.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.api.model.errors;
2 |
3 | import org.springframework.http.HttpStatus;
4 | import org.springframework.web.bind.annotation.ResponseStatus;
5 |
6 | /** An error thrown when ReportStream fails without a valid response */
7 | @ResponseStatus(HttpStatus.SERVICE_UNAVAILABLE)
8 | public class DependencyFailureException extends RuntimeException {
9 |
10 | public DependencyFailureException(String message) {
11 | super(message);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/db/model/auxiliary/AimsSubmissionSummary.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.db.model.auxiliary;
2 |
3 | import gov.cdc.usds.simplereport.db.model.Organization;
4 | import gov.cdc.usds.simplereport.service.model.S3UploadResponse;
5 | import java.util.HashMap;
6 | import java.util.UUID;
7 |
8 | public record AimsSubmissionSummary(
9 | UUID submissionId,
10 | Organization org,
11 | S3UploadResponse submissionResponse,
12 | HashMap reportedDiseases)
13 | implements SubmissionSummary {}
14 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/TestResultGuidance/HepatitisCResultGuidance.test.tsx:
--------------------------------------------------------------------------------
1 | import { render, screen } from "@testing-library/react";
2 |
3 | import "../../../i18n";
4 |
5 | import HepatitisCResultGuidance from "./HepatitisCResultGuidance";
6 |
7 | describe("HepatitisCResultGuidance", () => {
8 | it("displays guidance for a Hepatitis C result", () => {
9 | const { container } = render();
10 | expect(screen.getByText("For Hepatitis C:")).toBeInTheDocument();
11 | expect(container).toMatchSnapshot();
12 | });
13 | });
14 |
--------------------------------------------------------------------------------
/frontend/src/app/commonComponents/TextWithTooltip.scss:
--------------------------------------------------------------------------------
1 | .usa-text-with-tooltip {
2 | .usa-button--unstyled {
3 | text-decoration: none;
4 | color: #1b1b1b;
5 |
6 | &:hover {
7 | text-decoration: none;
8 | color: #1b1b1b;
9 | }
10 | }
11 |
12 | .usa-tooltip__body {
13 | white-space: pre-wrap;
14 | min-width: 300px;
15 | padding: 1em;
16 | }
17 |
18 | svg {
19 | color: #005ea2;
20 | display: inline-block !important;
21 | overflow: visible !important;
22 | vertical-align: -0.125em !important;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/frontend/src/app/utils/languages.tsx:
--------------------------------------------------------------------------------
1 | import { languages } from "../../config/constants";
2 | import i18n from "../../i18n";
3 |
4 | export function setLanguage(displayLanguage: string) {
5 | i18n.changeLanguage(displayLanguage);
6 | document.documentElement.setAttribute("lang", displayLanguage);
7 | }
8 |
9 | export default function getI18nLanguages(): string[] {
10 | return languages.map((language) => {
11 | const translationKey = `languages.${language}`;
12 |
13 | return i18n.exists(translationKey) ? i18n.t(translationKey) : language;
14 | });
15 | }
16 |
--------------------------------------------------------------------------------
/ops/services/app_service/_data.tf:
--------------------------------------------------------------------------------
1 | data "terraform_remote_state" "global" {
2 | backend = "azurerm"
3 | config = {
4 | resource_group_name = "prime-simple-report-test"
5 | storage_account_name = "usdssimplereportglobal"
6 | container_name = "sr-tfstate"
7 | key = "global/terraform.tfstate"
8 | }
9 | }
10 |
11 | data "azurerm_subscription" "primary" {
12 |
13 | }
14 |
15 | data "azurerm_key_vault_certificate" "wildcard_simplereport_gov" {
16 | key_vault_id = var.key_vault_id
17 | name = "new-sr-wildcard"
18 | }
19 |
--------------------------------------------------------------------------------
/backend/src/main/java/gov/cdc/usds/simplereport/config/authorization/SiteAdminPrincipal.java:
--------------------------------------------------------------------------------
1 | package gov.cdc.usds.simplereport.config.authorization;
2 |
3 | /** A principal asserting that the bearer subject is a SimpleReport site administrator. */
4 | public final class SiteAdminPrincipal extends NamedPrincipal {
5 | private static final SiteAdminPrincipal INSTANCE = new SiteAdminPrincipal();
6 |
7 | private SiteAdminPrincipal() {
8 | super("SITE_ADMIN");
9 | }
10 |
11 | public static SiteAdminPrincipal getInstance() {
12 | return INSTANCE;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/frontend/src/app/accountCreation/MfaGoogleAuth/MfaGoogleAuth.tsx:
--------------------------------------------------------------------------------
1 | import { AccountCreationApi } from "../AccountCreationApiService";
2 | import { MfaTotp } from "../MfaTotp/MfaTotp";
3 | import { useDocumentTitle } from "../../utils/hooks";
4 |
5 | export const MfaGoogleAuth = () => {
6 | useDocumentTitle(
7 | "Set up authentication via the Google Authenticator application"
8 | );
9 |
10 | return (
11 | AccountCreationApi.enrollTotpMfa("Google")}
14 | />
15 | );
16 | };
17 |
--------------------------------------------------------------------------------
/frontend/src/app/supportAdmin/DeviceType/mocks/mockSupportedDiseaseTestPerformedSyphilis.ts:
--------------------------------------------------------------------------------
1 | const mockSupportedDiseaseTestPerformedSyphilis = [
2 | {
3 | supportedDisease: {
4 | internalId: "49248233-1780-4303-b5fe-05c1d3f34ab7",
5 | loinc: "LP17126-1",
6 | name: "Syphilis",
7 | },
8 | testPerformedLoincCode: "80387-4",
9 | equipmentUid: "SyphilisEquipmentUid123",
10 | testkitNameId: "SyphilisTestkitNameId123",
11 | testOrderedLoincCode: "80387-5",
12 | },
13 | ];
14 |
15 | export default mockSupportedDiseaseTestPerformedSyphilis;
16 |
--------------------------------------------------------------------------------