Git Product home page Git Product logo

ecrnow's People

Contributors

akinny avatar ananthakrishnav avatar annamdas avatar arunkumarhk avatar bhargavchowdhary avatar brynrhodes avatar deepaksmailgithub avatar dependabot[bot] avatar jesse-daniel-wyatt avatar jpercival avatar jreyno77 avatar keeyanghoreshi avatar minigrrl avatar monikadrajer avatar nbashyam avatar netkraft avatar nmeachen avatar raghunathsandilya avatar rdingwell avatar rmharrison avatar sabirnits15 avatar saloniswaroop avatar shubhamanand-cerner avatar skshahi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ecrnow's Issues

CDA: Encompassing encounter section only one practitioner is used

Multiple practitioner is retrieved at line[1], but only one practitioner is used due to overwriting logic at line[2]. If intension is to use only one practitioner then retrieve only one this will save time, if intension is use all practitioner then change code accordingly.
[1] - https://github.com/drajer-health/eCRNow/blob/master/src/main/java/com/drajer/sof/service/LoadingQueryR4Bundle.java#L84
[2] - https://github.com/drajer-health/eCRNow/blob/master/src/main/java/com/drajer/cdafromR4/CdaEicrGeneratorFromR4.java#L45

Note: some of the logic in LoadingQueryR4Bundle.java is moved to R4ResourcesData.java, with that [1] is replaced with [3]
[3] - https://github.com/drajer-health/eCRNow/blob/Cerner-SonarFixAndITtests/src/main/java/com/drajer/sof/utils/R4ResourcesData.java#L721

CDA: duplicate conditions are populated in problem section.

At first condition is added at line[1] when retrieved the resource from FHIR call and later again populated from the bundle at line[2]. I think this is a defect and should be fixed. Also, similar issue with other resources like Immunization, DiagnosticReport, MedicationStatement, Observation(currently commented), etc.. All resources should be cross checked.

[1] - https://github.com/drajer-health/eCRNow/blob/master/src/main/java/com/drajer/sof/service/LoadingQueryR4Bundle.java#L154
[2] - https://github.com/drajer-health/eCRNow/blob/master/src/main/java/com/drajer/cdafromR4/CdaEicrGeneratorFromR4.java#L57

Note: some of the logic in LoadingQueryR4Bundle.java is moved to R4ResourcesData.java, with that [1] is replaced with [3]
[3] - https://github.com/drajer-health/eCRNow/blob/Cerner-SonarFixAndITtests/src/main/java/com/drajer/sof/utils/R4ResourcesData.java#L790

Fix Duplicate logger issues in the code

SystemLaunch: Fails without encounter in the request.

Fails to filter the encounter based on dt/tm due to exception at line[1]. Here period.getEnd() will be NULL as it won't be present always. Also, the dates "start" and "end" will also be null as per the logic at line[2].

[1]- https://github.com/drajer-health/eCRNow/blob/master/src/main/java/com/drajer/sof/utils/R4ResourcesData.java#L84
[2]- https://github.com/drajer-health/eCRNow/blob/master/src/main/java/com/drajer/sof/launch/LaunchController.java#L438

Also, need to cross check the logic at [3], sends failure response if encounter missing in the request. Instead, if it is able to retrieve the encounter based on patient ID then it push return success.
[3]- https://github.com/drajer-health/eCRNow/blob/master/src/main/java/com/drajer/sof/launch/LaunchController.java#L173

R4Bundle: Service Request-Occurrence DtTm will throw expection.

Line[1] will throw expectation as Occurrence can be of 3 different types. If it is not of type DateTimeType then it will throw expectation and other resource entries in the bundle won't be processed.

[1]-https://github.com/drajer-health/eCRNow/blob/master/src/main/java/com/drajer/sof/utils/R4ResourcesData.java#L676

Try to retrieve getOccurrence and then check for the type.
Same issue with Immunization[2] as well, need to cross check.
[2]- https://github.com/drajer-health/eCRNow/blob/master/src/main/java/com/drajer/sof/utils/R4ResourcesData.java#L612

Patient Id Generation changes

Patient Ids:
- Algorithm will look for Patient Ids in FHIR resources Patient.identifier of type MR.
- If the System Values are populated as urn:oid, they will be used as is and the identifier will copied over to the CDA.
- If the system value matches some code system URL that can be translated to an OID, then the identifier will be copied over to CDA.
- If the system value cannot be translated to an OID or the system value is not populated and the default AA OID is configured in the App, the identifier will be copied over to the CDA.

- All other types of identifiers will be ignored (Non MR types).

EICR Results Section Text- Row data and Column Header not matching

In the results section of the EICR document generated through application, text has 3 columns in the table. The order in which the table columns appear is not in sync with the order in which the table data is displayed. This happens due to the use of HashMap [CdaTesultsGenerator, Method-generateResultsSection] to store row values.

Code Snippet:

     for (Observation obs : results) {

    String obsDisplayName = CdaGeneratorConstants.UNKNOWN_VALUE;
    List<Coding> cds = null;
    if (obs.getCode() != null && obs.getCode().getCodingFirstRep() != null) {

      cds = obs.getCode().getCoding();

      if (!StringUtils.isEmpty(obs.getCode().getCodingFirstRep().getDisplay())) {
        obsDisplayName = obs.getCode().getCodingFirstRep().getDisplay();
      } else if (!StringUtils.isEmpty(obs.getCode().getText())) {
        obsDisplayName = obs.getCode().getText();
      }
    }

    Map<String, String> bodyvals = new HashMap<>();
    bodyvals.put(CdaGeneratorConstants.LABTEST_TABLE_COL_1_BODY_CONTENT, obsDisplayName);

    String val = CdaGeneratorConstants.UNKNOWN_VALUE;
    if (obs.getValue() != null) {

      val = CdaFhirUtilities.getStringForType(obs.getValue());
    }

For Lab Result the trigger code observation should be sufficient

When the specific lab test matches, the matching code should be in the code element of the observtaion and the other codes should be in the translation.

The observation value should be the value from the lab test, .

PAtient Id :
Encounter Id:

Observation with the matching LOINC code in the code element.

Value element should contain the value from the FHIR result value. If the value matches, then we should add the SDTC value set and value set version to the element.

Encounter location changes

For determining Encounter location to be used for jurisdictions.

- Algorithm will look for Encounter.location.address in the FHIR Resource, 
	- If address is found , then the address will be used in the CDA document.
	- If the address or location does not exist, then 
		- Check the Encounter.service Provider.address 
			- If found, we will use that.

- If we do not find an address after the above algorithm, then we will not produce an eICR.

- In future, we can add the following to the algorithm to determine address: 
	
	- Check Encounter.participant โ€”
		 - Practitioner . Address 
		- - Practitioner Role .address
		- - Organization.address 

If it is found then use it.

Vulnerable JavaScript dependencies reported by GitHub Enterprise

Vulnerabilities that need to be addressed before production deployment.

Vulnerabilities reported in frontend/package-lock.json
kind-of - Known security vulnerability in 3.2.2 https://nvd.nist.gov/vuln/detail/CVE-2019-20149
object-path - Known security vulnerability in 0.11.4 https://github.com/mariocasciaro/object-path/security/advisories/GHSA-cwx2-736x-mf6w

Vulnerabilities reported in frontend/yarn.lock
acorn - Known security vulnerability in 6.1.1 https://github.com/acornjs/acorn/issues/929
dot-prop - Known security vulnerability in 4.2.0 https://nvd.nist.gov/vuln/detail/CVE-2020-8116
elliptic - Known security vulnerability in 6.4.1 https://nvd.nist.gov/vuln/detail/CVE-2020-13822
handlebars - Known security vulnerability in 4.1.2 https://nvd.nist.gov/vuln/detail/CVE-2019-19919
http-proxy - Known security vulnerability in 1.17.0 https://github.com/http-party/node-http-proxy/pull/1447/files
kind-of - Known security vulnerability in 6.0.2 https://nvd.nist.gov/vuln/detail/CVE-2019-20149
lodash - Known security vulnerability in 4.17.11 https://nvd.nist.gov/vuln/detail/CVE-2020-8203
minimist - Known security vulnerability in 0.0.10 https://nvd.nist.gov/vuln/detail/CVE-2020-7598
node-forge - Known security vulnerability in 0.7.5 https://nvd.nist.gov/vuln/detail/CVE-2020-7720
serialize-javascript - Known security vulnerability in 1.7.0 https://nvd.nist.gov/vuln/detail/CVE-2020-7660
websocket-extensions - Known security vulnerability in 0.1.3 https://github.com/faye/websocket-extensions-node/security/advisories/GHSA-g78m-2chm-r7qv
yargs-parser - Known security vulnerability in 11.1.1 https://github.com/yargs/yargs-parser/commit/63810ca1ae1a24b08293a4d971e70e058c7a41e2

CDA: EncompassingEncounter section - Code should use Encounter Class instead of Encounter Type.

In EncompassingEncounter section CODE is always nullflavour as it is using encounter.type instead of encounter.class[1]. As per spec Value Set: ActEncounterCode urn:oid:2.16.840.1.113883.1.11.13955 should be used for CODE. Valueset ActEncounterCode is used in Encounter.class as per [2].

[1] - https://github.com/drajer-health/eCRNow/blob/master/src/main/java/com/drajer/cdafromR4/CdaHeaderGenerator.java#L383
[2] - https://www.hl7.org/fhir/v3/ActEncounterCode/vs.html

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.