diff --git a/docs/latest/README.md b/docs/latest/README.md index 296b83c41..a47453d61 100644 --- a/docs/latest/README.md +++ b/docs/latest/README.md @@ -48,7 +48,7 @@ Check out these helpful links: --> -[ohif-org]: https://www.ohif.org +[ohif-org]: http://www.ohif.org [dicom-web]: https://en.wikipedia.org/wiki/DICOMweb [gh-issues]: https://github.com/OHIF/Viewers/issues diff --git a/docs/latest/SUMMARY.md b/docs/latest/SUMMARY.md index 81845ced2..b1a4e593e 100644 --- a/docs/latest/SUMMARY.md +++ b/docs/latest/SUMMARY.md @@ -5,6 +5,7 @@ - [Getting Started](development/getting-started.md) - [Contributing](development/contributing.md) - [Continuous Integration](development/continous-integration.md) + - [Testing](development/testing.md) - [Configuring](configuring/index.md) - [Data Source](configuring/data-source.md) diff --git a/docs/latest/architecture/index.md b/docs/latest/architecture/index.md index 360148af3..1491faea5 100644 --- a/docs/latest/architecture/index.md +++ b/docs/latest/architecture/index.md @@ -13,7 +13,6 @@ architected, and the role each of it's dependent libraries plays. - [Overview](#overview) - [Business Logic](#business-logic) - [Component Library](#react-component-library) -- [Internationalization](#internationalization-i18n) - [Extensions & Configuration](#extensions--configuration) - [Common Questions](#common-questions) @@ -74,10 +73,10 @@ This diagram is a conceptual illustration of how the Viewer is architected. The [`@ohif/core`][core-github] project offers pre-packaged solutions for features common to Web-based medical imaging viewers. For example: -- [Hotkeys](#) +- Hotkeys - DICOM Web requests - Hanging Protocols -- [Managing a study's measurements](../services/default/measurements.md) +- Managing a study's measurements - Managing a study's DICOM metadata - [A flexible pattern for extensions](../extensions/index.md) - And many others @@ -99,10 +98,6 @@ application. [Check out our component library!](https://react.ohif.org/) -## Internationalization (i18n) - -... - ## Extensions & Configuration While OHIF maintains several high value and commonly requested features in its @@ -120,7 +115,7 @@ the viewer. Some common use cases include: We expose common integration points via [extensions](../extensions/index.md) to make this possible. The viewer and many of our own extensions also offer [configuration][configuration]. For a list of extensions maintained by OHIF, -[check out this helpful table](../extensions/index.mdl#maintained-extensions). +[check out this helpful table](../extensions/index.md#maintained-extensions). If you find yourself thinking "I wish the Viewer could do X", and you can't accomplish it with an extension today, create a GitHub issue! We're actively @@ -147,12 +142,12 @@ you would need to recreate. --> -[monorepo]: # +[monorepo]: https://github.com/OHIF/Viewers/issues/768 [viewers-project]: https://github.com/OHIF/Viewers [viewer-npm]: https://www.npmjs.com/package/@ohif/viewer [pwa]: https://developers.google.com/web/progressive-web-apps/ [configuration]: ../configuring/index.md [extensions]: ../extensions/index.md [core-github]: https://github.com/OHIF/viewers/platform/core -[ui-github]: https://github.com/OHIF/Viewers/platform/ui +[ui-github]: https://github.com/OHIF/Viewers/tree/master/platform/ui diff --git a/docs/latest/deployment/index.md b/docs/latest/deployment/index.md index 5e2a7a528..6e811551b 100644 --- a/docs/latest/deployment/index.md +++ b/docs/latest/deployment/index.md @@ -123,7 +123,7 @@ There are two important steps to making sure this setup works: Most image archives do not provide either of these features "out of the box". It's common to use IIS, Nginx, or Apache to route incoming requests and append appropriate headers. You can find an example of this setup in our -[Nginx + Image Archive Deployment Recipe](deployment/recipes/nginx--image-archive.md). +[Nginx + Image Archive Deployment Recipe](./recipes/nginx--image-archive.md). #### What if my archive doesn't support DicomWeb? @@ -166,7 +166,7 @@ window.config = { ``` You can find an example of this setup in our -[User Account Control Deployment Recipe](deployment/recipes/user-account-control.md). +[User Account Control Deployment Recipe](./recipes/user-account-control.md). #### Choosing a Flow for the Viewer @@ -183,12 +183,12 @@ many possible configurations, so please don't feel limited to these setups. Please feel free to suggest or contribute your own recipes. - Script Include - - [Embedding the Viewer](deployment/recipes/embedded-viewer.md) + - [Embedding the Viewer](./recipes/embedded-viewer.md) - Stand-Alone - - [Build for Production](deployment/recipes/build-for-production.md) - - [Static](deployment/recipes/static-assets.md) - - [Nginx + Image Archive](deployment/recipes/nginx--image-archive.md) - - [User Account Control](deployment/recipes/user-account-control.md) + - [Build for Production](./recipes/build-for-production.md) + - [Static](./recipes/static-assets.md) + - [Nginx + Image Archive](./recipes/nginx--image-archive.md) + - [User Account Control](./recipes/user-account-control.md) -[config]: # -[dockerfile]: # -[config-nginx]: # -[config-orthanc]: # +[dockerfile]: https://github.com/OHIF/Viewers/blob/master/platform/viewer/.recipes/OpenResty-Orthanc/dockerfile +[config-nginx]: https://github.com/OHIF/Viewers/blob/master/platform/viewer/.recipes/OpenResty-Orthanc/config/nginx.conf +[config-orthanc]: https://github.com/OHIF/Viewers/blob/master/platform/viewer/.recipes/OpenResty-Orthanc/config/orthanc.json diff --git a/docs/latest/deployment/recipes/user-account-control.md b/docs/latest/deployment/recipes/user-account-control.md index bed05787d..f6f0b0a16 100644 --- a/docs/latest/deployment/recipes/user-account-control.md +++ b/docs/latest/deployment/recipes/user-account-control.md @@ -122,7 +122,10 @@ likely want to update: #### OHIF Viewer -The OHIF Viewer's configuration is imported from a static `.js` file. The configuration we use is set to a specific file when we build the viewer, and determined by the env variable: `APP_CONFIG`. You can see where we set its value in the `dockerfile` for this solution: +The OHIF Viewer's configuration is imported from a static `.js` file. The +configuration we use is set to a specific file when we build the viewer, and +determined by the env variable: `APP_CONFIG`. You can see where we set its value +in the `dockerfile` for this solution: `ENV APP_CONFIG=config/docker_openresty-orthanc-keycloak.js` @@ -146,8 +149,8 @@ All other files are found in: `/docker/OpenResty-Orthanc-Keycloak/` | Orthanc | [`/orthanc.json`][config-orthanc] | [Here][orthanc-docs] | | Keycloak | [`/ohif-keycloak-realm.json`][config-keycloak]\* | | -- \* These are the seed values for Keycloak. They can be manually updated at - `http://127.0.0.1/auth/admin` +\* These are the seed values for Keycloak. They can be manually updated at +`http://127.0.0.1/auth/admin` #### Keycloak Themeing @@ -261,12 +264,12 @@ for OAuth: - [Diagrams of OpenID Connect Flows](https://medium.com/@darutk/diagrams-of-all-the-openid-connect-flows-6968e3990660) - [KeyCloak: OpenID Connect Flows](https://www.keycloak.org/docs/latest/securing_apps/index.html#authorization-code) - - [Good description on SSO Protocols](https://www.keycloak.org/docs/2.5/server_admin/topics/sso-protocols/oidc.html) -For a different take on this setup, check out the repository one of our -community members put together: +For a different take on this setup, check out the repositories our community +members put together: - [mjstealey/ohif-orthanc-dimse-docker](https://github.com/mjstealey/ohif-orthanc-dimse-docker) +- [trypag/ohif-orthanc-postgres-docker](https://github.com/trypag/ohif-orthanc-postgres-docker) [config]: https://github.com/OHIF/Viewers/blob/master/platform/viewer/src/config.js -[dockerfile]: https://github.com/OHIF/Viewers/tree/master/platform/viewer/.recipes -[config-nginx]: https://github.com/OHIF/Viewers/tree/master/platform/viewer/.recipes -[config-orthanc]: https://github.com/OHIF/Viewers/tree/master/platform/viewer/.recipes -[config-keycloak]: https://github.com/OHIF/Viewers/tree/master/platform/viewer/.recipes +[dockerfile]: https://github.com/OHIF/Viewers/blob/master/platform/viewer/.recipes/OpenResty-Orthanc-Keycloak/dockerfile +[config-nginx]: https://github.com/OHIF/Viewers/blob/master/platform/viewer/.recipes/OpenResty-Orthanc-Keycloak/config/nginx.conf +[config-orthanc]: https://github.com/OHIF/Viewers/blob/master/platform/viewer/.recipes/OpenResty-Orthanc-Keycloak/config/orthanc.json +[config-keycloak]: https://github.com/OHIF/Viewers/blob/master/platform/viewer/.recipes/OpenResty-Orthanc-Keycloak/config/ohif-keycloak-realm.json diff --git a/docs/latest/development/contributing.md b/docs/latest/development/contributing.md index bd78e3513..6e7128501 100644 --- a/docs/latest/development/contributing.md +++ b/docs/latest/development/contributing.md @@ -114,8 +114,8 @@ the tips above will help ensure your changes are reviewed. ## Testing contribution pull requests -OHIF uses [netlify](netlify.com) so that pull requests are autogenerated and -available for testing. +OHIF uses [netlify](https://www.netlify.com/) so that pull requests are +autogenerated and available for testing. For example, [this url][example-url] allows you to test [pull request 237, the request that created this FAQ entry,][pr-237] using data pulled from Amazon S3. diff --git a/docs/latest/development/testing.md b/docs/latest/development/testing.md index ddffd3de2..396a10104 100644 --- a/docs/latest/development/testing.md +++ b/docs/latest/development/testing.md @@ -132,7 +132,7 @@ feature `X` or scenario `Y`? Open an issue and let's discuss. [flow-org]: https://flow.org/ [assert-js-talks]: https://www.youtube.com/playlist?list=PLZ66c9_z3umNSrKSb5cmpxdXZcIPNvKGw -[kent-talk]: https://www.youtube.com/watch?list=PLV5CVI1eNcJgNqzNwcs4UKrlJdhfDjshf +[kent-talk]: https://www.youtube.com/watch?v=Fha2bVoC8SE [gleb-talk]: https://www.youtube.com/watch?v=5FnalKRjpZk [kent-blog]: https://kentcdodds.com/blog/unit-vs-integration-vs-e2e-tests diff --git a/docs/latest/extensions/_maintained-extensions-table.md b/docs/latest/extensions/_maintained-extensions-table.md index 43a558e46..f986f47b5 100644 --- a/docs/latest/extensions/_maintained-extensions-table.md +++ b/docs/latest/extensions/_maintained-extensions-table.md @@ -31,6 +31,7 @@ Viewport, Toolbar + DICOM HTML @@ -40,6 +41,7 @@ Viewport, SopClassHandler + DICOM PDF @@ -49,6 +51,7 @@ Viewport, SopClassHandler + DICOM Microscopy @@ -58,5 +61,15 @@ Viewport, SopClassHandler + + + + DICOM Segmentation + + + Renders segmentation images for a specific SopClassUID. + + Panel, Toolbar + diff --git a/docs/latest/extensions/index.md b/docs/latest/extensions/index.md index d5052873f..6f33e7e06 100644 --- a/docs/latest/extensions/index.md +++ b/docs/latest/extensions/index.md @@ -74,7 +74,8 @@ export default { ### Registering an Extension There are two different ways to register and configure extensions: At -[runtime](#runtime-extensions) and at [build time](#bundled-extensions). +[runtime](#registering-at-runtime) and at +[build time](#registering-at-build-time). You can leverage one or both strategies. Which one(s) you choose depend on your application's requirements. Each [module](#modules) defined by the extension @@ -82,9 +83,9 @@ becomes available to the core application via the `ExtensionManager`. #### Registering at Runtime -The `@ohif/viewer` uses a [configuration file](#) at startup. The schema for -that file includes an `Extensions` key that supports an array of extensions to -register. +The `@ohif/viewer` uses a [configuration file](../viewer/configuration.md) at +startup. The schema for that file includes an `Extensions` key that supports an +array of extensions to register. ```js // prettier-ignore @@ -193,8 +194,8 @@ today, create a GitHub issue! The `ExtensionManager` is a class made available to us via the `@ohif/core` project (platform/core). Our application instantiates a single instance of it, -and provides a `ServicesManager` and `CommandsManager` along with the application's -configuration through the appConfig key (optional). +and provides a `ServicesManager` and `CommandsManager` along with the +application's configuration through the appConfig key (optional). ```js const commandsManager = new CommandsManager(); @@ -202,7 +203,7 @@ const servicesManager = new ServicesManager(); const extensionManager = new ExtensionManager({ commandsManager, servicesManager, - appConfig + appConfig, }); ``` @@ -212,8 +213,9 @@ The `ExtensionManager` only has a few public members: - `registerExtensions` - Registers an array of extensions - `modules` - An object containing registered extensions by `MODULE_TYPE` -During registration, lifecycle hooks and modules have access to the extension's config, -the application's config and `ExtensionManager`'s `ServicesManager` and `CommandsManager` instances. +During registration, lifecycle hooks and modules have access to the extension's +config, the application's config and `ExtensionManager`'s `ServicesManager` and +`CommandsManager` instances. Our `@ohif/viewer` uses the `modules` member to access registered extensions at appropriate places in our application. diff --git a/docs/latest/extensions/modules/sop-class-handler.md b/docs/latest/extensions/modules/sop-class-handler.md index 84e743b72..a5eb02547 100644 --- a/docs/latest/extensions/modules/sop-class-handler.md +++ b/docs/latest/extensions/modules/sop-class-handler.md @@ -1,9 +1,9 @@ # Module: SOP Class Handler -An extension can register a SOP Class Handler Module by defining a -`getSopClassHandlerModule` method. The SOP Class Handler is a bit different from -the other modules, as it doesn't provide a `1:1` schema for UI or provide it's -own components. It instead defines: +An extension can register a [SOP Class][sop-class-link] Handler Module by +defining a `getSopClassHandlerModule` method. The [SOP Class][sop-class-link] +Handler is a bit different from the other modules, as it doesn't provide a `1:1` +schema for UI or provide it's own components. It instead defines: - `sopClassUIDs`: an array of string SOP Class UIDs that the `getDisplaySetFromSeries` method should be applied to. @@ -76,6 +76,13 @@ getSopClassHandlerModule({ servicesManager, commandsManager }) { }; ``` +### More examples : + +- [Dicom-HTML SOP][dicom-html-sop] +- [Dicom-PDF SOP][dicom-pdf-sop] +- [Dicom-Microscopy SOP][dicom-micro-sop] +- [Dicom-Segmentation SOP][dicom-seg-sop] + ## `@ohif/viewer` usage We use the `sopClassHandlerModule`s in three different places: @@ -88,3 +95,11 @@ Each time, it is used to map study and series data to `displaySets`. It does this by working alongside the `StudyMetadataManager` in `@ohif/core`. That manager has the method `createDisplaySets` that takes an array of `sopClassHandlerModules`. + + +[sop-class-link]: http://dicom.nema.org/dicom/2013/output/chtml/part04/sect_B.5.html +[dicom-html-sop]: https://github.com/OHIF/Viewers/blob/master/extensions/dicom-html/src/OHIFDicomHtmlSopClassHandler.js#L4-L12 +[dicom-pdf-sop]: https://github.com/OHIF/Viewers/blob/master/extensions/dicom-pdf/src/OHIFDicomPDFSopClassHandler.js#L4-L6 +[dicom-micro-sop]: https://github.com/OHIF/Viewers/blob/master/extensions/dicom-microscopy/src/DicomMicroscopySopClassHandler.js#L5-L7 +[dicom-seg-sop]: https://github.com/OHIF/Viewers/blob/master/extensions/dicom-segmentation/src/OHIFDicomSegSopClassHandler.js#L5-L7 + diff --git a/docs/latest/our-process.md b/docs/latest/our-process.md index 596d9fc58..28855a40e 100644 --- a/docs/latest/our-process.md +++ b/docs/latest/our-process.md @@ -75,7 +75,7 @@ items to our ["Active Development" GitHub Project Board][gh-board]. Items on this project board are either in active development by Core Team members, or queued up for development as in-progress items are completed. -> :pencil: Want to contribute but not sure where to start? Check out [Up for +> 🖋 Want to contribute but not sure where to start? Check out [Up for > grabs][label-grabs] issues and our [Contributing > documentation][contributing-docs] @@ -156,5 +156,5 @@ addressed and a Stable version is released. [ohif-prod]: https://viewer.ohif.org [gh-board]: https://github.com/OHIF/Viewers/projects/4 [label-grabs]: https://github.com/OHIF/Viewers/issues?q=is%3Aissue+is%3Aopen+label%3A%22Up+For+Grabs+%3Araising_hand_woman%3A%22 -[contributing-docs]: https://docs.ohif.org/contributing/ +[contributing-docs]: ./development/contributing.md diff --git a/docs/latest/services/index.md b/docs/latest/services/index.md index 16848ceb5..aeda69c85 100644 --- a/docs/latest/services/index.md +++ b/docs/latest/services/index.md @@ -62,7 +62,7 @@ able to fail or be removed. Related patterns that may reduce coupling include: --> -[commands]: #/ +[commands]: ../extensions/modules/commands.md [core-services]: https://github.com/OHIF/Viewers/tree/master/platform/core/src/services [services-manager]: https://github.com/OHIF/Viewers/blob/master/platform/core/src/services/ServicesManager.js [cross-cutting-concerns]: https://en.wikipedia.org/wiki/Cross-cutting_concern diff --git a/docs/latest/services/ui/index.md b/docs/latest/services/ui/index.md index 46b289f0c..3de1aa4e1 100644 --- a/docs/latest/services/ui/index.md +++ b/docs/latest/services/ui/index.md @@ -2,8 +2,8 @@ - [Overview](#overview) - [Example](#example) -- [Tips & Tricks](#/) -- [Maintained Services](#/) +- [Tips & Tricks](#tips--tricks) +- [Maintained Services](#maintained-services) ## Overview diff --git a/docs/latest/viewer/internationalization.md b/docs/latest/viewer/internationalization.md index d298574c8..8b75ac9fd 100644 --- a/docs/latest/viewer/internationalization.md +++ b/docs/latest/viewer/internationalization.md @@ -135,7 +135,7 @@ console.log(T('$t(Common:Play) my translated text')); # Main Concepts While Translating -## - Namespaces +## Namespaces Namespaces are being used to organize translations in smaller portions, combined semantically or by use. Each `.json` file inside `@ohif/i18n` npm package @@ -157,7 +157,7 @@ NameSpace, like this following example getting data from `Common` NameSpace: $t(Common:Reset) ``` -## - Extending Languages in @ohif/i18n +## Extending Languages in @ohif/i18n Sometimes, even using the same language, some nouns or jargons can change according to the country, states or even from Hospital to Hospital. @@ -212,7 +212,7 @@ object like this: Please check the `index.js` files inside locales folder for an example of this exporting structure. -### - Extending languages dynamically +### Extending languages dynamically You have access to the i18next instance, so you can use the [addResourceBundle](https://www.i18next.com/how-to/add-or-load-translations#add-after-init) @@ -314,4 +314,4 @@ REACT_APP_I18N_DEBUG=true yarn run dev ### Contributing with new languages Contributions of any kind are welcome! Please check the -[instructions](https://docs.ohif.org/contributing.html). +[instructions](../development/contributing.md).