Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ADRs: Filling in impact sections for 001 - 006 #1416

Closed
wants to merge 181 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
181 commits
Select commit Hold shift + click to select a range
7e295ae
Added Impact section to adrs 002,003,004
tjohnson7021 Sep 2, 2024
2c0f818
Fixed formatting for 002,003,004
tjohnson7021 Sep 2, 2024
68b4176
Added impact section for 005
tjohnson7021 Sep 3, 2024
fe75acf
WIP Adding impact section for 006
tjohnson7021 Sep 3, 2024
cd967a8
Merge branch 'main' into devex/1247-add_impact_sections
tjohnson7021 Oct 14, 2024
84cc5b2
Updated impact section for 006
tjohnson7021 Oct 14, 2024
d0542a6
Renamed and updated 005-oesa.md
tjohnson7021 Oct 15, 2024
cbfb173
Improved ADR generation
tjohnson7021 Oct 15, 2024
70dd2cc
Fixed formatting and added recommended changes
tjohnson7021 Oct 15, 2024
d231f85
Update dependency ch.qos.logback:logback-classic to v1.5.11 (#1427)
renovate[bot] Oct 15, 2024
b8f5a90
Create .pr_agent.toml (#1430)
somesylvie Oct 15, 2024
d89e567
OpenAI PR Agent Setup (#1429)
somesylvie Oct 15, 2024
b6bdad5
Auto-assign our GitHub project on story creation
halprin Oct 16, 2024
a41ef3a
Revert "Auto-assign our GitHub Project on Story Creation"
halprin Oct 16, 2024
99d0f24
removed dash
tjohnson7021 Oct 16, 2024
591b7a3
Removed guideline
tjohnson7021 Oct 16, 2024
b3e5f72
Fixed formatting for 002,003,004
tjohnson7021 Sep 2, 2024
c64c48f
Added impact section for 005
tjohnson7021 Sep 3, 2024
b06e709
WIP Adding impact section for 006
tjohnson7021 Sep 3, 2024
4fb2f65
modified coding system in transformation_definitions.json
tjohnson7021 Sep 2, 2024
a1e3ac4
Re-added alternateId in case it is needed
tjohnson7021 Sep 2, 2024
0d86c2c
Modified test class and example message to match expectations
tjohnson7021 Sep 2, 2024
95e8826
Update transformation_definitions.json
luis-pabon-tf Sep 4, 2024
4a50762
Update Terraform azurerm to v4
renovate[bot] Aug 30, 2024
557e66e
Do the docker registry URL through application_stack instead of a app…
halprin Aug 30, 2024
1a2f9a2
Try setting docker_image_name to nothing
halprin Aug 30, 2024
e882cce
Ingore the docker_image_name
halprin Aug 30, 2024
07ae1d1
join lifecycles
halprin Aug 30, 2024
57fa996
Arrays for site_config
halprin Aug 30, 2024
cb75852
Arrays for application_stack
halprin Aug 30, 2024
e127d87
Specify a docker_image_name
halprin Aug 30, 2024
4148b5e
Adding sku to public ip to set it to Basic
jcrichlake Sep 3, 2024
73a446a
Fixing linting
jcrichlake Sep 3, 2024
bc0d812
Adding key permissions to deployer
jcrichlake Sep 3, 2024
8f83ba3
Reverting prior changes and setting enabled to true on app.tf
jcrichlake Sep 3, 2024
e428094
Adding access policy to container registry
jcrichlake Sep 3, 2024
7779c1b
Using principal_id instead of object_id
jcrichlake Sep 3, 2024
e4a26f9
Adding depends on to managed identity and then changing container reg…
jcrichlake Sep 3, 2024
ae7a626
linting
jcrichlake Sep 3, 2024
e478dcd
Reverting changes due to cycle
jcrichlake Sep 3, 2024
118da48
Terraform format
halprin Sep 4, 2024
67ad35b
Added comments with associated curl commands to hurl scripts (#1256)
basiliskus Sep 4, 2024
ee36b7b
Create Azure storage account and container to store HL7 files for aut…
basiliskus Sep 4, 2024
3a3ae12
Keep pre-live deployment slot healthy (#1284)
somesylvie Sep 4, 2024
44a6f3e
ADR for deployment slots (#1289)
somesylvie Sep 4, 2024
db08314
Update liquibase-github-actions/update action to v4.29.2 (#1292)
renovate[bot] Sep 5, 2024
df0051f
Workflow to send HL7 messages to RS staging (#1274)
basiliskus Sep 6, 2024
8493796
Update alpine Docker tag to v3.20.3 (#1295)
renovate[bot] Sep 7, 2024
7f3c2bb
Update dependency ch.qos.logback:logback-classic to v1.5.8 (#1296)
renovate[bot] Sep 7, 2024
9031c0a
Update dependency gradle to v8.10.1 (#1298)
renovate[bot] Sep 9, 2024
af173d2
Test update dev VPN certificate
halprin Sep 5, 2024
b0832d6
Update stg and prd VPN cert
halprin Sep 5, 2024
5868beb
Add classes for copying ORC value
tjohnson7021 Aug 22, 2024
50517c6
WIP-copy ORC.12
tjohnson7021 Aug 22, 2024
825ff73
WIP - writing first test
jbiskie Aug 22, 2024
81e42af
WIP - first test partially complete
jbiskie Aug 22, 2024
112f532
Add references to extensions for ORC-12
jbiskie Aug 23, 2024
6272caf
Add getPractitioner to HapiHelper
tjohnson7021 Aug 26, 2024
131b3a5
Update HapiHelper.java
luis-pabon-tf Aug 26, 2024
7cbe51a
Update CopyOrcOrderProviderToObrOrderProviderTest.groovy
luis-pabon-tf Aug 26, 2024
8f477d7
Refactor variable names and add constants
jbiskie Aug 26, 2024
01372b9
WIP - First test passing - need to populate remaining tests
tjohnson7021 Aug 27, 2024
9b2966a
WIP - adding new example files for test cases
tjohnson7021 Aug 27, 2024
c646d5a
bundle method
jorg3lopez Aug 27, 2024
1513f9e
refactor adding helper methods to test class
jorg3lopez Aug 27, 2024
e8b2a69
Refactor test assertions into reusable functions
jbiskie Aug 27, 2024
9c60b3e
Cleaned up transform method
tjohnson7021 Aug 28, 2024
752a893
WIP - Test for when ORC.12 is empty but OBR.16 is not
tjohnson7021 Aug 28, 2024
3b801b2
added exception handling to helper method of test class
jorg3lopez Aug 28, 2024
42d7f73
Added the following:
jorg3lopez Aug 28, 2024
c93de31
added todo for transformation
jorg3lopez Aug 28, 2024
49c4c8a
added todo task for missing unit tests and added 1==1 to make them pass
jorg3lopez Aug 28, 2024
a037c8f
Adding translations generated from HL7 messages processed through Rep…
jbiskie Aug 29, 2024
f7fca8b
add logic to add obr16 resource when missing
jorg3lopez Aug 29, 2024
18dbf76
Update ORC to OBR 16 populationTest
hcp4 Aug 29, 2024
e741da2
Add tests for both cases where ORC-12 is not populated
jbiskie Aug 29, 2024
09e1b7d
Rename example files for ORC-12 to OBR-16 tests, delete unneeded exam…
jbiskie Aug 29, 2024
5ce268f
trasformation_definitions
jorg3lopez Aug 29, 2024
cc4798f
Modify example to use ORC-12.3 for 'NPI' and update test
jbiskie Aug 30, 2024
8547e8d
Added ORC.12 and OBR.16 to FHIRMappingPath.java
tjohnson7021 Sep 2, 2024
cbef596
Update CopyOrcOrderProviderToObrOrderProviderTest.groovy
luis-pabon-tf Sep 3, 2024
be06f22
Update examples with post-TI and post-RS to HL7 transformations
jbiskie Sep 3, 2024
cf59d04
Normalize line endings for repository
jbiskie Sep 4, 2024
a9c2e87
refactor:
jorg3lopez Sep 5, 2024
f853e2b
Add tests for refactored 'ensure' methods
jbiskie Sep 5, 2024
c6801eb
unit test for whenn diagnostic report is null
jorg3lopez Sep 6, 2024
4b30218
added unit test for when service request is null
jorg3lopez Sep 6, 2024
6745217
added unit test for when practitioner role is null
jorg3lopez Sep 6, 2024
57d63ee
fixed unit test for null service request
jorg3lopez Sep 6, 2024
750ac0e
fixed unit tests:
jorg3lopez Sep 6, 2024
d73d27c
fixed unit test: when practitioner role is null
jorg3lopez Sep 6, 2024
a7390c7
added null check that returns an empty stream when null
jorg3lopez Sep 6, 2024
a47dff5
Update HapiHelperTest.groovy
luis-pabon-tf Sep 6, 2024
a8260af
Update HapiHelperTest.groovy
luis-pabon-tf Sep 9, 2024
5aa215a
Update Terraform azurerm to v4.1.0 (#1297)
renovate[bot] Sep 9, 2024
0249e1f
Add test for empty obr-4.4 value and update transform to ignore when …
jbiskie Sep 9, 2024
851febc
Allow the app slot to pull from the container registry
halprin Sep 9, 2024
7b43282
Add prod azure dashboard settings
saquino0827 Sep 10, 2024
291c9a1
Properly name terraform variables for future reference
saquino0827 Sep 10, 2024
a126a84
Use managed identity to pull image from container registry for the de…
halprin Sep 10, 2024
13a7367
Delete ig folder
halprin Sep 10, 2024
4e93201
Touch gitignore
halprin Sep 10, 2024
a3947de
Update GitHub actions to do nothing with the IG
halprin Sep 10, 2024
d820c05
Remove the IG from the Terraform
halprin Sep 10, 2024
e84cab5
Update DOD to remove updating the IG
halprin Sep 10, 2024
2d292ee
Add terraform format pre-commit hook (#1307)
somesylvie Sep 11, 2024
f523a2c
Update MSH-9 for OML messages to be consistent with the HL7 spec (#1300)
somesylvie Sep 11, 2024
e1613a0
Update dependency org.apache.groovy:groovy to v4.0.23 (#1308)
renovate[bot] Sep 12, 2024
bf40a27
Remove Invalid Tokens from cache when found
saquino0827 Sep 13, 2024
79b9c69
Updated the public key into a class variable and fixed unit tests
saquino0827 Sep 13, 2024
23549ec
Remove excess blank newline
saquino0827 Sep 13, 2024
ea350b8
Add comments for caching
saquino0827 Sep 16, 2024
e003932
Change Log Alert settings to white list all envs except PR
saquino0827 Sep 12, 2024
aa25209
Use count index in alert.tf for correct action group id value
saquino0827 Sep 12, 2024
07374a4
Extract alert non pr conditional check as a local variable
saquino0827 Sep 13, 2024
1feb4b4
update non_pr_environment variable to a blacklist
saquino0827 Sep 13, 2024
657964b
Update dependency com.azure:azure-identity to v1.13.3 (#1334)
renovate[bot] Sep 14, 2024
42b2764
Update Terraform azurerm to v4.2.0 (#1335)
renovate[bot] Sep 16, 2024
33c40a9
Update minor dependencies to v5.4 (#1339)
renovate[bot] Sep 19, 2024
b9ac702
Update dependency com.azure:azure-storage-blob to v12.28.0 (#1344)
renovate[bot] Sep 21, 2024
de6e440
Update Terraform azurerm to v4.3.0 (#1345)
renovate[bot] Sep 23, 2024
aa316d5
Updated RS Hurl Script to Replace MSH Header When Not Toggled (#1342)
pluckyswan Sep 23, 2024
f746f5f
Fixed prod prefix mapping
jherrflexion Sep 23, 2024
5cfa60c
Update dependency gradle to v8.10.2 (#1347)
renovate[bot] Sep 24, 2024
e573929
Use explicit assertions and look in the right place for ORC-12 provider
jbiskie Sep 24, 2024
9603a5d
Update patch dependencies to v7.4.2 (#1367)
renovate[bot] Sep 27, 2024
2af9b44
Update minor dependencies
renovate[bot] Sep 27, 2024
190ab1f
Spotless does different formatting now, fixing
halprin Sep 27, 2024
bcfc1bb
Hurl script updates (#1368)
basiliskus Sep 27, 2024
c96c263
Update dependency com.azure:azure-security-keyvault-secrets to v4.8.7…
renovate[bot] Sep 28, 2024
8676e9e
CA observation transforms from local code to LOINC or PLT (#1306)
luis-pabon-tf Sep 28, 2024
2edc240
Update jackson monorepo to v2.18.0 (#1364)
renovate[bot] Sep 30, 2024
f9355b9
Roll up commits from previous branch
jbiskie Sep 30, 2024
b295883
Rename new transformation to be more generic
luis-pabon-tf Sep 30, 2024
9b5ebad
Update transformation_definitions.json
luis-pabon-tf Sep 30, 2024
db51755
Update HapiHelperTest.groovy
luis-pabon-tf Oct 1, 2024
b3fcd1f
Convert hasLocalCodeInAlternateCoding into a more reusable HapiHelper…
luis-pabon-tf Oct 1, 2024
34d8838
Update patch dependencies to v7.4.3 (#1373)
renovate[bot] Sep 30, 2024
b370c96
Transformation Engine To Use Map<String,Object> As Args (#1362)
jorg3lopez Oct 1, 2024
e7f3db6
Map<String,Object> for args
jorg3lopez Oct 1, 2024
d8932b2
Update RemoveObservationByCode.java
luis-pabon-tf Oct 1, 2024
516789f
Fix DORA metrics workflow (#1375)
somesylvie Oct 1, 2024
2713835
Sleep 2 minutes before swapping slots to see if this reduces swap tim…
somesylvie Oct 1, 2024
e6708e5
Update RemoveObservationByCode.java
luis-pabon-tf Oct 1, 2024
ed23699
Minor cleanup
jbiskie Oct 2, 2024
466ba2a
Refactor common matching methods in Coding transforms
jbiskie Oct 2, 2024
ae114ba
Fix code smell
jbiskie Oct 2, 2024
debc8b1
Add test for hasDefinedCoding
jbiskie Oct 2, 2024
59dbb33
Remove nested if
jbiskie Oct 2, 2024
6eb217f
Update dependency com.zaxxer:HikariCP to v6
renovate[bot] Sep 23, 2024
d19ad8a
Support Hikari's 6.0 way of getting credentials
halprin Oct 1, 2024
d334e7c
Update transformation_definitions.json
luis-pabon-tf Oct 2, 2024
7698934
Update dependency nl.jqno.equalsverifier:equalsverifier to v3.17.1 (#…
renovate[bot] Oct 2, 2024
fe15bba
Make the root API endpoint a health check too
halprin Oct 4, 2024
5c74cec
Remove the extraneous 2 minute wait before slot swapping
halprin Oct 4, 2024
65e3ddd
RS Integration Tests in Staging (#1293)
basiliskus Oct 4, 2024
0304ee6
Update dependency com.fasterxml.jackson.core:jackson-databind to v2.1…
renovate[bot] Oct 4, 2024
f70b1e6
Update minor dependencies (#1382)
renovate[bot] Oct 7, 2024
68670dc
Update Terraform azurerm to v4.4.0 (#1388)
renovate[bot] Oct 7, 2024
c500e99
Update dependency org.apache.groovy:groovy to v4.0.23 (#1384)
renovate[bot] Oct 8, 2024
f9d75d7
Added new e2e tests created to the DOD
halprin Oct 7, 2024
cf5322d
Removed PR check items from the DOD
halprin Oct 7, 2024
96bc5bb
Rewrite rs-e2e DoD item
halprin Oct 8, 2024
46d86dd
Update dependency ch.qos.logback:logback-classic to v1.5.9 (#1392)
renovate[bot] Oct 8, 2024
b71c0d6
Updated MSH-11 to N for automated test sample files (#1402)
basiliskus Oct 8, 2024
9b4bd44
Update dependency com.azure:azure-storage-blob to v12.28.1 (#1403)
renovate[bot] Oct 9, 2024
2cc01bd
Use MSH-11 to identify test messages (#1389)
basiliskus Oct 11, 2024
2f1aadd
Update dependency ch.qos.logback:logback-classic to v1.5.10 (#1414)
renovate[bot] Oct 12, 2024
dcccf93
Update Terraform azurerm to v4.5.0 (#1415)
renovate[bot] Oct 14, 2024
188e42e
Updated impact section for 006
tjohnson7021 Oct 14, 2024
754d0e9
Renamed and updated 005-oesa.md
tjohnson7021 Oct 15, 2024
80a4c8b
Improved ADR generation
tjohnson7021 Oct 15, 2024
823c881
Fixed formatting and added recommended changes
tjohnson7021 Oct 15, 2024
14247e7
Update dependency ch.qos.logback:logback-classic to v1.5.11 (#1427)
renovate[bot] Oct 15, 2024
cfd4900
Create .pr_agent.toml (#1430)
somesylvie Oct 15, 2024
2ee3b54
OpenAI PR Agent Setup (#1429)
somesylvie Oct 15, 2024
16bbda9
Auto-assign our GitHub project on story creation
halprin Oct 16, 2024
2c1f959
Revert "Auto-assign our GitHub Project on Story Creation"
halprin Oct 16, 2024
7bc01bd
removed dash
tjohnson7021 Oct 16, 2024
fac24ae
Removed guideline
tjohnson7021 Oct 16, 2024
32d6bfd
Merge branch 'devex/1247-add_impact_sections' of https://github.com/C…
tjohnson7021 Oct 17, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .github/workflows/pr_agent.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Perry the PR Agent Platypus

# Config for this action lives in .pr_agent.toml, but only the version on
# main is read - you'll need to merge config changes before they take effect.
# You can test config changes by making them in the `env` section below, but
# should then move them to the config file for consistency/readability

on:
pull_request:
issue_comment:
types: [created]
jobs:
pr_agent_job:
if: ${{ github.event.sender.type != 'Bot' }}
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
contents: write
name: Run pr agent on every pull request, respond to user comments
steps:
- name: PR Agent action step
id: pragent
uses: Codium-ai/pr-agent@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENAI_KEY: ${{ secrets.AZURE_OPENAI_KEY }}
OPENAI.API_TYPE: 'azure'
OPENAI.API_BASE: ${{ secrets.AZURE_OPENAI_BASE_URL }}
OPENAI.DEPLOYMENT_ID: ${{ secrets.AZURE_OPENAI_DEPLOYMENT_ID }}
OPENAI_API_VERSION: '2023-03-15'
AZURE_API_VERSION: '2023-03-15-preview' # Specific version required to address compatibility issues with GPT-4 deployment on Azure.
45 changes: 45 additions & 0 deletions .pr_agent.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# See https://github.com/Codium-ai/pr-agent/blob/main/pr_agent/settings/configuration.toml for all possible config options
# The pr_agent.yml action reads this file from the `main` branch, so changes to this file
# will not take effect until they are merged into main

[config]
model="gpt-4" # the OpenAI model you've deployed on Azure (e.g. gpt-3.5-turbo)
model_turbo="gpt-4" # the OpenAI model you've deployed on Azure (e.g. gpt-3.5-turbo)
fallback_models=["gpt-4"] # the OpenAI model you've deployed on Azure (e.g. gpt-3.5-turbo)

[github_action_config]
auto_review = true
auto_describe = false
auto_improve = true
pr_actions = ["opened", "reopened", "ready_for_review", "review_requested"]

[pr_reviewer] # /review #
# enable/disable features
# general options
num_code_suggestions=3 # Number of code suggestions provided by the 'review' tool. Default is 0, meaning no code suggestions will be provided by the `review` tool.
inline_code_comments = true # If set to true, the tool will publish the code suggestions as comments on the code diff. Default is false. Note that you need to set `num_code_suggestions`>0 to get code suggestions
ask_and_reflect=false
persistent_comment=false
#automatic_review=true
extra_instructions = "" # Optional extra instructions to the tool. For example: "focus on the changes in the file X. Ignore change in ...".
final_update_message = true # If set to true, it will add a comment message [`PR Description updated to latest commit...`](https://github.com/Codium-ai/pr-agent/pull/499#issuecomment-1837412176) after finishing calling `/describe`. Default is false.
# review labels
enable_review_labels_security=false # If set to true, the tool will publish a 'possible security issue' label if it detects a security issue. Default is true.
enable_review_labels_effort=false # If set to true, the tool will publish a 'Review effort [1-5]: x' label. Default is true.
# specific configurations for incremental review (/review -i)
require_all_thresholds_for_incremental_review=false
minimal_commits_for_incremental_review=0
minimal_minutes_for_incremental_review=0
enable_intro_text=true
enable_help_text=false # Determines whether to include help text in the PR review. Enabled by default.
# auto approval
enable_auto_approval=false # If set to true, the tool will approve the PR when invoked with the 'auto_approve' command. Default is false. This flag can be changed only from a configuration file.

[pr_description] # /describe #
publish_labels=false
# describe as comment
publish_description_as_comment=true
publish_description_as_comment_persistent=false

[pr_code_suggestions] # /improve #
persistent_comment=false
17 changes: 16 additions & 1 deletion adr/001-architecture-decision-records.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,30 +17,45 @@ ADRs are originally described by [Michael Nygard in an article](https://cognitec
We want to record our architectural decisions so that...

- New team members who join can see why we made the decisions we made.


- The team can revise or revisit decisions with more confidence and context.

## Impact

_The outcomes of the decision, both positive and negative. This section explains the impact of the decision, such as trade-offs, risks, and what needs to be done to implement it._
The outcomes of the decision, both positive and negative. This section should explain the impact of the decision, such as trade-offs, risks, and what needs to be done to implement it.

### Positive

- **Transparency**: ADRs make decision-making more transparent, helping current and future team members understand the rationale behind decisions.


- **Historical Context**: They provide valuable historical context, aiding in future decision-making and avoiding repeated mistakes.


- **Onboarding**: ADRs speed up the onboarding process by quickly familiarizing new team members with architectural decisions.


- **Consistency**: A standardized format ensures consistent documentation, making records easier to maintain and reference.

### Negative

- **Overhead**: Maintaining ADRs requires time and effort.


- **Outdated Records**: If not regularly updated, ADRs can become outdated and misleading.

### Risks

- **Incomplete Documentation**: Not all decisions may be documented, leading to gaps in the record.


- **Misalignment**: ADRs may not always match the actual implementation, causing confusion.

## Related Issues

- #1
- #13
- #1247

### Please see [adr-guidelines.md](adr/adr-guidelines.md) before completing.
26 changes: 24 additions & 2 deletions adr/002-java.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ Date: 2022-10-21

## Decision

We will use Java 17 for the main trusted intermediary code.
We will use Java 17 for the main intermediary code.

This doesn't preclude us from using other languages for other services or applications.

## Status
Expand All @@ -13,10 +14,31 @@ Accepted.

## Context

We decided to use a JVM based language because it has many third-party healthcare libraries and frameworks.
We decided to use a Java Virtual Machine- (JVM) based language because it has many third-party healthcare libraries and frameworks that are pertinent to the project.

We decided on Java over Kotlin, Scala, and Groovy because more people know Java.

## Impact

### Positive

- **Robust and Well-Maintained Libraries:** has robust libraries, like HAPI FHIR, which provide comprehensive support for creating, parsing, and validating FHIR resources. Libraries are well-maintained and widely used in the healthcare industry


- **Powerful Data Processing:** ability to handle large-scale, multithreaded applications makes it suitable for processing large volumes of FHIR data in real-time, which is crucial in healthcare settings


- **Compliant Security Features:** Java's security features, such as encryption and secure authentication mechanisms, help in building HIPAA-compliant FHIR applications.

### Negative

- **Verbose Code:** Code tends to be more verbose leading to longer development times and more boilerplate code.


### Risks

- **Limited Functional Expression:** Limited functional programming capabilities can make it harder to express certain data transformation logic that is common in FHIR processing, compared to languages with stronger functional programming support.

### Related Issues

- #1
Expand Down
40 changes: 35 additions & 5 deletions adr/003-gradle.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,51 @@ Date: 2022-10-24

## Decision

We will use the [Gradle build tool](https://gradle.org) for the main trusted intermediary code.
We will use the [Gradle build tool](https://gradle.org) for the main intermediary code.

## Status

Accepted.

## Context

[Maven](https://maven.apache.org) is the other big option available to us. Gradle was chosen over Maven because
- it uses Groovy, an actual programming language, to configure the projects instead of XML, which has a rigidly defined schema.
This allows for better expressibility in how one configures their project.
Other build tools were considered; [Maven](https://maven.apache.org) is the other big option available to us. Gradle was chosen over Maven because
- Gradle uses Groovy, an actual programming language, to configure the projects instead of XML (Extensible Markup Language), which has a rigidly defined schema.


- Gradle allows for diversity in configuration of the project.


- Gradle is faster with its job execution.


### Related Issues
## Impact

### Positive
somesylvie marked this conversation as resolved.
Show resolved Hide resolved

- **Advanced Dependency Management** capabilities help streamline the integration of FHIR libraries, such as HAPI FHIR, and other required dependencies


- **Highly Customizable Scripts:** Highly customizable build scripts allow for fine-tuned configuration.


- **Reduced build times**


- **CI/CD Automation:** integrates well with continuous integration and continuous deployment (CI/CD) pipelines, enabling automated testing

### Negative

- **Cumbersome Build Scripts:** Flexibility can lead to complex and verbose build scripts; Managing these scripts can become cumbersome.


- **Configuration Incompatibility:** Custom configurations may not be fully compatible with certain versions of Java or FHIR libraries.

### Risks

- **Possible Slow Build Times** due to scripts and project size

## Related Issues

- #1
- #13
35 changes: 31 additions & 4 deletions adr/004-groovy-spock.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,51 @@ Date: 2022-10-24

## Decision

We will use the [Groovy programming language](http://groovy-lang.org) with the
[Spock testing framework](https://spockframework.org) for our unit and end-to-end testing.
We will use the [Groovy programming language](http://groovy-lang.org) with the [Spock testing framework](https://spockframework.org) for our unit and end-to-end testing.

## Status

Accepted.

## Context

Spock is a testing framework similar to [JUnit](https://junit.org/junit5/). Some benefits of Spock include...
Spock is a testing framework similar to [JUnit](https://junit.org/junit5/). Some benefits of Spock include:

- Encourages BDD-style given/when/then testing.

- Mocking is _super_ easy. No need for a separate dependency like [Mockito](https://site.mockito.org).

- Expressive assertion failures. No need for a separate dependency like [Google Truth](https://truth.dev).

- Adds a layer of flexibility and expressiveness to testing that you don't get with JUnit.

Spock requires we use Groovy, another JVM-based language.

### Related Issues
## Impact

### Positive

- **Expressive and readable tests**


- **Data-driven Testing:** supports data-driven testing which is useful for testing FHIR resources across a variety of scenarios with different data sets


- **Integrates well with Java**

### Negative

- **Limited IDE Support:** writing and debugging tests can become cumbersome

### Risks

- **Slower Test Execution:** Tests can potentially run slower compared to simpler JUnit tests, especially for larger test suites.


- **Dependency Management:** Managing Groovy dependencies alongside Java libraries may introduce complexity or compatibility issues in certain build environments.


## Related Issues

- #1
- #13
60 changes: 60 additions & 0 deletions adr/005-oea.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# 5. Option Enabling Architecture (OEA)

Date: 2022-10-24

## Decision

We will use use OEA practices to inform how we add new features and refactor.

## Status

Accepted.

## Context

OEA is similar to [Clean Architecture](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html).
There are a couple main concepts that we strive to maintain while also being pragmatic.

1. Less important code depends on more important code. For example, third-party dependencies such as ReST
frameworks, and database ORMs. This allows for swapping out less important code without affecting the more
important code.


2. Dependency inversion. This allows the path of code execution not to follow the dependency path of
less important code depending on more important code. For example, when business logic needs to call the
database.

## Impact

### Positive

- **More flexible architecture**


- **Risk mitigation** through delayed decision-making.


- **Minimizes large-scale changes and overhauls**


- **Better maintainability**

### Negative

- **Experience May Be Required:** requires more experience to implement successfully


- **Increased initial development time**


- **Increased Planning:** requires much more forethought prior to implementation

### Risks

- **Overengineering:** potential to overengineer by keeping too many options open
- Deferred decision-making can lead to technical debt

## Related Issues

- #1
- #13
28 changes: 0 additions & 28 deletions adr/005-oesa.md

This file was deleted.

Loading