From 7e18caff36f7397bdc4614682bcfc4939d4d590c Mon Sep 17 00:00:00 2001 From: noah1013 Date: Tue, 30 Apr 2024 15:50:30 -0700 Subject: [PATCH 01/20] Added github workflow to check for LICENSE file --- .github/workflows/license_check.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .github/workflows/license_check.yml diff --git a/.github/workflows/license_check.yml b/.github/workflows/license_check.yml new file mode 100644 index 000000000..d7b4bca18 --- /dev/null +++ b/.github/workflows/license_check.yml @@ -0,0 +1,24 @@ +name: Check for LICENSE File in femr Directory + +on: + push: + branches: + - temr-dev-noah + +jobs: + check-license-file: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Check LICENSE file existence in femr directory + id: check_license + uses: andstor/file-existence-action@v3 + with: + files: "femr/LICENSE" + fail: true + + - name: Fail if LICENSE does not exist in femr directory + if: steps.check_license.outputs.files_exists == 'false' + run: exit 1 \ No newline at end of file From ba07b2cca50d9ebfd2640e6411280bd220912bdb Mon Sep 17 00:00:00 2001 From: noah1013 Date: Tue, 30 Apr 2024 15:54:41 -0700 Subject: [PATCH 02/20] Added LICENSE to branch --- LICENSE.txt | 636 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 636 insertions(+) create mode 100644 LICENSE.txt diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 000000000..0d3ff251a --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,636 @@ +fEMR - fast Electronic Medical Records +Copyright (C) 2014 Team fEMR + +fEMR is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +fEMR is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License (below) for more details. + + + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS From 3fabf2be043ad318989b9b6cce36c7c803289460 Mon Sep 17 00:00:00 2001 From: noah1013 <51393548+noah1013@users.noreply.github.com> Date: Tue, 30 Apr 2024 15:55:58 -0700 Subject: [PATCH 03/20] Delete LICENSE.txt --- LICENSE.txt | 636 ---------------------------------------------------- 1 file changed, 636 deletions(-) delete mode 100644 LICENSE.txt diff --git a/LICENSE.txt b/LICENSE.txt deleted file mode 100644 index 0d3ff251a..000000000 --- a/LICENSE.txt +++ /dev/null @@ -1,636 +0,0 @@ -fEMR - fast Electronic Medical Records -Copyright (C) 2014 Team fEMR - -fEMR is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -fEMR is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License (below) for more details. - - - - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS From cd292bf951b5c839c3d82aa448674765774eaa45 Mon Sep 17 00:00:00 2001 From: noah1013 Date: Tue, 30 Apr 2024 15:57:40 -0700 Subject: [PATCH 04/20] Added LICENSE to branch --- LICENSE | 636 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 636 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..0d3ff251a --- /dev/null +++ b/LICENSE @@ -0,0 +1,636 @@ +fEMR - fast Electronic Medical Records +Copyright (C) 2014 Team fEMR + +fEMR is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +fEMR is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License (below) for more details. + + + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS From b2baa012604b286ed6286bcb6a9aa7bb4143f70a Mon Sep 17 00:00:00 2001 From: noah1013 Date: Tue, 30 Apr 2024 16:03:04 -0700 Subject: [PATCH 05/20] Added debug code to license checker --- .github/workflows/license_check.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/license_check.yml b/.github/workflows/license_check.yml index d7b4bca18..aee067168 100644 --- a/.github/workflows/license_check.yml +++ b/.github/workflows/license_check.yml @@ -12,6 +12,9 @@ jobs: - name: Checkout code uses: actions/checkout@v2 + - name: List contents of femr directory + run: ls -la femr + - name: Check LICENSE file existence in femr directory id: check_license uses: andstor/file-existence-action@v3 From dcfc07f7050c0b841dfda23d51e5e604edf0d49e Mon Sep 17 00:00:00 2001 From: noah1013 Date: Wed, 1 May 2024 14:22:17 -0700 Subject: [PATCH 06/20] Attempt to fix license detector --- .github/workflows/license_check.yml | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/.github/workflows/license_check.yml b/.github/workflows/license_check.yml index aee067168..2f71fc377 100644 --- a/.github/workflows/license_check.yml +++ b/.github/workflows/license_check.yml @@ -15,13 +15,19 @@ jobs: - name: List contents of femr directory run: ls -la femr - - name: Check LICENSE file existence in femr directory - id: check_license - uses: andstor/file-existence-action@v3 - with: - files: "femr/LICENSE" - fail: true - - - name: Fail if LICENSE does not exist in femr directory - if: steps.check_license.outputs.files_exists == 'false' - run: exit 1 \ No newline at end of file + - name: Check if file exists + run: | + if [ ! -f "femr/LICENSE" ]; then + echo "File does not exist. Exiting with failure." + exit 1 + fi +# - name: Check LICENSE file existence in femr directory +# id: check_license +# uses: andstor/file-existence-action@v3 +# with: +# files: "femr/LICENSE" +# fail: true +# +# - name: Fail if LICENSE does not exist in femr directory +# if: steps.check_license.outputs.files_exists == 'false' +# run: exit 1 \ No newline at end of file From 3200c43fb4c6f146e33c4d1bdcbe68fa1d31d2fb Mon Sep 17 00:00:00 2001 From: noah1013 Date: Wed, 1 May 2024 14:37:18 -0700 Subject: [PATCH 07/20] Attempt to fix license detector --- .github/workflows/license_check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/license_check.yml b/.github/workflows/license_check.yml index 2f71fc377..c0774e9ee 100644 --- a/.github/workflows/license_check.yml +++ b/.github/workflows/license_check.yml @@ -13,7 +13,7 @@ jobs: uses: actions/checkout@v2 - name: List contents of femr directory - run: ls -la femr + run: ls -laR femr - name: Check if file exists run: | From fef2cc5285c30616bbf230bab28a278d6675d884 Mon Sep 17 00:00:00 2001 From: DJump13 Date: Thu, 9 May 2024 09:25:36 -0700 Subject: [PATCH 08/20] test --- translator/libargos.py | 64 -------------------- translator/libmarian.py | 22 ------- translator/optimizeLanguage.py | 33 ---------- translator/server.py | 107 --------------------------------- 4 files changed, 226 deletions(-) delete mode 100644 translator/libargos.py delete mode 100644 translator/libmarian.py delete mode 100644 translator/optimizeLanguage.py delete mode 100644 translator/server.py diff --git a/translator/libargos.py b/translator/libargos.py deleted file mode 100644 index a41359334..000000000 --- a/translator/libargos.py +++ /dev/null @@ -1,64 +0,0 @@ -import argostranslate.package -import argostranslate.settings -import os -from pathlib import Path - -PATH = os.getcwd() -ARGOS_PACKAGES_DIR=Path(f"{PATH}/translator/argos_models") - -#Download all available packages -def download_packages(): - if not ARGOS_PACKAGES_DIR.exists(): os.mkdir(ARGOS_PACKAGES_DIR) - argostranslate.settings.downloads_dir = ARGOS_PACKAGES_DIR - argostranslate.package.update_package_index() - available_packages = argostranslate.package.get_available_packages() - for package in available_packages: - package_name = package.code + ".argosmodel" - if package_name not in os.listdir(ARGOS_PACKAGES_DIR): - package.download() - - -#returns list of installed_packages with names in format matching the filenames -def get_installed_package_names(): - models = [] - installed_packages = argostranslate.package.get_installed_packages() - for package in installed_packages: - model_name = f"translate-{package.from_code}_{package.to_code}.argosmodel" - models.append(model_name) - return models - -#Installs all packages from local directory -def install_packages(): - installed_packages = get_installed_package_names() - for filename in os.listdir(ARGOS_PACKAGES_DIR): - if filename not in installed_packages: - file = os.path.join(ARGOS_PACKAGES_DIR, filename) - argostranslate.package.install_from_path(file) - return argostranslate.package.get_installed_packages() - -#Uninstall all packages -def uninstall_all_packages(): - installed = argostranslate.package.get_installed_packages() - for package in installed: - argostranslate.package.uninstall(package) - -#update all installed packages -def update_packages(): - installed = install_packages() - for package in installed: - package.update() - -#displays all installed packages -def display_installed_packages(): - installed = install_packages() - list = {} - for package in installed: - list.update({package.to_code:package.to_name}) - list.update({package.from_code:package.from_name}) - for code in list: - print(f"{code}, {list[code]}") - -if __name__ == "__main__": - download_packages() - display_installed_packages() - diff --git a/translator/libmarian.py b/translator/libmarian.py deleted file mode 100644 index 58a5ee5e1..000000000 --- a/translator/libmarian.py +++ /dev/null @@ -1,22 +0,0 @@ -from transformers import MarianMTModel, MarianTokenizer -from typing import Sequence -import os -PATH = os.getcwd() - -def download_package(src, dst): - print(f"Downloading {src}-{dst}...") - model_name = f"Helsinki-NLP/opus-mt-{src}-{dst}" - try: - tokenizer = MarianTokenizer.from_pretrained(model_name) - tokenizer.save_pretrained(f"{PATH}/translator/marian_models/opus-mt-{src}-{dst}") - model = MarianMTModel.from_pretrained(model_name) - model.save_pretrained(f"{PATH}/translator/marian_models/opus-mt-{src}-{dst}") - except OSError: - print("Package not found") - -def package_downloaded(src, dst): - package_name = f"opus-mt-{src}-{dst}" - os.makedirs(f"{PATH}/translator/marian_models", exist_ok=True) - if package_name in os.listdir(f"{PATH}/translator/marian_models"): - return True - return False \ No newline at end of file diff --git a/translator/optimizeLanguage.py b/translator/optimizeLanguage.py deleted file mode 100644 index e9e5f5e35..000000000 --- a/translator/optimizeLanguage.py +++ /dev/null @@ -1,33 +0,0 @@ -import sys -import libargos as argos -import libmarian as marian - -def optimize_path(src, dest): - #download all available argos packages - argos.download_packages() - - #check if installed as argos - argos_packages = argos.install_packages() - for package in argos_packages: - if(package.from_code == src and package.to_code == dest): - return - - #check if present as marian - if(marian.package_downloaded(src, dest)): - return - - #download marian package - marian.download_package(src, dest) - -def main(): - lang_one = sys.argv[1] - lang_two = sys.argv[2] - optimize_path(lang_one, lang_two) - optimize_path(lang_two, lang_one) - print(f"{lang_one} and {lang_two} Optimized") - -if __name__ == "__main__": - main() - - - diff --git a/translator/server.py b/translator/server.py deleted file mode 100644 index c2ba7ba49..000000000 --- a/translator/server.py +++ /dev/null @@ -1,107 +0,0 @@ -import os -import sys -import json -import argostranslate.package -import argostranslate.translate -from functools import cached_property -from http.server import BaseHTTPRequestHandler -from urllib.parse import parse_qsl, urlparse -from http.server import HTTPServer -from pathlib import Path -from transformers import MarianMTModel, MarianTokenizer -from typing import Sequence -from libargos import install_packages -import socket -import time - -PORTS = [8000, 5000, 8001, 8002, 8003, 8004, 8005, 8006, 8007, 8008] -TIMEOUT = 3600 -PATH = os.getcwd() - - - -class MarianModel: - def __init__(self, source_lang: str, dest_lang: str) -> None: - path = f"{PATH}/translator/marian_models/opus-mt-{source_lang}-{dest_lang}" - self.model = MarianMTModel.from_pretrained(path, local_files_only = True) - self.tokenizer = MarianTokenizer.from_pretrained(path, local_files_only = True) - - def translate(self, texts: Sequence[str]) -> Sequence[str]: - tokens = self.tokenizer(list(texts), return_tensors="pt", padding=True) - translate_tokens = self.model.generate(**tokens) - return [self.tokenizer.decode(t, skip_special_tokens=True) for t in translate_tokens] - -class WebRequestHandler(BaseHTTPRequestHandler): - @cached_property - def url(self): - return urlparse(self.path) - - @cached_property - def query_data(self): - return dict(parse_qsl(self.url.query)) - - @cached_property - def translate_data(self): - text = self.query_data['text'] - from_code = self.query_data['from'] - to_code = self.query_data['to'] - - # Use Argos if Language Package Exists - if Path(f"{PATH}/translator/argos_models/translate-{from_code}_{to_code}.argosmodel").exists(): - translatedText = argostranslate.translate.translate(text, from_code, to_code) - return translatedText - # Use Marian if Language Package Exists in Marian but not Argos - elif Path(f"{PATH}/translator/marian_models/opus-mt-{from_code}-{to_code}").exists(): - marian = MarianModel(from_code, to_code) - translatedText = marian.translate([text]) - return translatedText[0] - # Use Argos "English in the Middle" if not in Argos and Marian by Default - elif (Path(f"{PATH}/translator/argos_models/translate-{from_code}_en.argosmodel").exists() and \ - Path(f"{PATH}/translator/argos_models/translate-{to_code}_en.argosmodel").exists()) or \ - (Path(f"{PATH}/translator/argos_models/translate-en_{from_code}.argosmodel").exists() and \ - Path(f"{PATH}/translator/argos_models/translate-en_{to_code}.argosmodel").exists()): - translatedText = argostranslate.translate.translate(text, from_code, to_code) - return translatedText - # If a package doesn't exist - else: - return "Translation Unavailable:" + from_code + to_code - - def do_GET(self): - self.send_response(200) - self.send_header("Content-Type", "application/json") - self.end_headers() - self.wfile.write(self.get_response().encode("utf-8")) - - def get_response(self): - return json.dumps( - { - "translate_data" : self.translate_data if self.query_data else "", - }, - ensure_ascii=False - ) - - -def port_open(port): - #connect_ex returns 0 if it connects to a socket meaning port is closed - with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: - return s.connect_ex(('localhost', port)) != 0 - -def start_server(port): - try: - server = HTTPServer(("127.0.0.1", port), WebRequestHandler) - server.timeout = TIMEOUT - server.handle_timeout = lambda: (_ for _ in ()).throw(TimeoutError()) - print(f"Serving at port: {port}", file=sys.stderr) - print(f"Server started at {time.strftime('%I:%M')} with timeout: {TIMEOUT} seconds", file=sys.stderr) - while(True): server.handle_request() - except TimeoutError: - print("Translation server timed out") - sys.exit() - -if __name__ == "__main__": - install_packages() - for port in PORTS: - if(port_open(port)): - start_server(port) - - From 348f0fc6444dda9560a5898eaf977259e2643582 Mon Sep 17 00:00:00 2001 From: DJump13 Date: Thu, 9 May 2024 10:14:10 -0700 Subject: [PATCH 09/20] test 2 --- translator/libargos.py | 64 ++++++++++++++++++++ translator/libmarian.py | 22 +++++++ translator/optimizeLanguage.py | 33 ++++++++++ translator/server.py | 107 +++++++++++++++++++++++++++++++++ 4 files changed, 226 insertions(+) create mode 100644 translator/libargos.py create mode 100644 translator/libmarian.py create mode 100644 translator/optimizeLanguage.py create mode 100644 translator/server.py diff --git a/translator/libargos.py b/translator/libargos.py new file mode 100644 index 000000000..a41359334 --- /dev/null +++ b/translator/libargos.py @@ -0,0 +1,64 @@ +import argostranslate.package +import argostranslate.settings +import os +from pathlib import Path + +PATH = os.getcwd() +ARGOS_PACKAGES_DIR=Path(f"{PATH}/translator/argos_models") + +#Download all available packages +def download_packages(): + if not ARGOS_PACKAGES_DIR.exists(): os.mkdir(ARGOS_PACKAGES_DIR) + argostranslate.settings.downloads_dir = ARGOS_PACKAGES_DIR + argostranslate.package.update_package_index() + available_packages = argostranslate.package.get_available_packages() + for package in available_packages: + package_name = package.code + ".argosmodel" + if package_name not in os.listdir(ARGOS_PACKAGES_DIR): + package.download() + + +#returns list of installed_packages with names in format matching the filenames +def get_installed_package_names(): + models = [] + installed_packages = argostranslate.package.get_installed_packages() + for package in installed_packages: + model_name = f"translate-{package.from_code}_{package.to_code}.argosmodel" + models.append(model_name) + return models + +#Installs all packages from local directory +def install_packages(): + installed_packages = get_installed_package_names() + for filename in os.listdir(ARGOS_PACKAGES_DIR): + if filename not in installed_packages: + file = os.path.join(ARGOS_PACKAGES_DIR, filename) + argostranslate.package.install_from_path(file) + return argostranslate.package.get_installed_packages() + +#Uninstall all packages +def uninstall_all_packages(): + installed = argostranslate.package.get_installed_packages() + for package in installed: + argostranslate.package.uninstall(package) + +#update all installed packages +def update_packages(): + installed = install_packages() + for package in installed: + package.update() + +#displays all installed packages +def display_installed_packages(): + installed = install_packages() + list = {} + for package in installed: + list.update({package.to_code:package.to_name}) + list.update({package.from_code:package.from_name}) + for code in list: + print(f"{code}, {list[code]}") + +if __name__ == "__main__": + download_packages() + display_installed_packages() + diff --git a/translator/libmarian.py b/translator/libmarian.py new file mode 100644 index 000000000..9f17e112e --- /dev/null +++ b/translator/libmarian.py @@ -0,0 +1,22 @@ +from transformers import MarianMTModel, MarianTokenizer +from typing import Sequence +import os +PATH = os.getcwd() + +def download_package(src, dst): + print(f"Downloading {src}-{dst}...") + model_name = f"Helsinki-NLP/opus-mt-{src}-{dst}" + try: + tokenizer = MarianTokenizer.from_pretrained(model_name) + tokenizer.save_pretrained(f"{PATH}/translator/marian_models/opus-mt-{src}-{dst}") + model = MarianMTModel.from_pretrained(model_name) + model.save_pretrained(f"{PATH}/translator/marian_models/opus-mt-{src}-{dst}") + except OSError: + print("Package not found") + +def package_downloaded(src, dst): + package_name = f"opus-mt-{src}-{dst}" + os.makedirs(f"{PATH}/translator/marian_models", exist_ok=True) + if package_name in os.listdir(f"{PATH}/translator/marian_models"): + return True + return False \ No newline at end of file diff --git a/translator/optimizeLanguage.py b/translator/optimizeLanguage.py new file mode 100644 index 000000000..5553dd834 --- /dev/null +++ b/translator/optimizeLanguage.py @@ -0,0 +1,33 @@ +import sys +import libargos as argos +import libmarian as marian + +def optimize_path(src, dest): + #download all available argos packages + argos.download_packages() + + #check if installed as argos + argos_packages = argos.install_packages() + for package in argos_packages: + if(package.from_code == src and package.to_code == dest): + return + + #check if present as marian + if(marian.package_downloaded(src, dest)): + return + + #download marian package + marian.download_package(src, dest) + +def main(): + lang_one = sys.argv[1] + lang_two = sys.argv[2] + optimize_path(lang_one, lang_two) + optimize_path(lang_two, lang_one) + print(f"{lang_one} and {lang_two} Optimized") + +if __name__ == "__main__": + main() + + + diff --git a/translator/server.py b/translator/server.py new file mode 100644 index 000000000..584efbb1a --- /dev/null +++ b/translator/server.py @@ -0,0 +1,107 @@ +import os +import sys +import json +import argostranslate.package +import argostranslate.translate +from functools import cached_property +from http.server import BaseHTTPRequestHandler +from urllib.parse import parse_qsl, urlparse +from http.server import HTTPServer +from pathlib import Path +from transformers import MarianMTModel, MarianTokenizer +from typing import Sequence +from libargos import install_packages +import socket +import time + +PORTS = [8000, 5000, 8001, 8002, 8003, 8004, 8005, 8006, 8007, 8008] +TIMEOUT = 3600 +PATH = os.getcwd() + + + +class MarianModel: + def __init__(self, source_lang: str, dest_lang: str) -> None: + path = f"{PATH}/translator/marian_models/opus-mt-{source_lang}-{dest_lang}" + self.model = MarianMTModel.from_pretrained(path, local_files_only = True) + self.tokenizer = MarianTokenizer.from_pretrained(path, local_files_only = True) + + def translate(self, texts: Sequence[str]) -> Sequence[str]: + tokens = self.tokenizer(list(texts), return_tensors="pt", padding=True) + translate_tokens = self.model.generate(**tokens) + return [self.tokenizer.decode(t, skip_special_tokens=True) for t in translate_tokens] + +class WebRequestHandler(BaseHTTPRequestHandler): + @cached_property + def url(self): + return urlparse(self.path) + + @cached_property + def query_data(self): + return dict(parse_qsl(self.url.query)) + + @cached_property + def translate_data(self): + text = self.query_data['text'] + from_code = self.query_data['from'] + to_code = self.query_data['to'] + + # Use Argos if Language Package Exists + if Path(f"{PATH}/translator/argos_models/translate-{from_code}_{to_code}.argosmodel").exists(): + translatedText = argostranslate.translate.translate(text, from_code, to_code) + return translatedText + # Use Marian if Language Package Exists in Marian but not Argos + elif Path(f"{PATH}/translator/marian_models/opus-mt-{from_code}-{to_code}").exists(): + marian = MarianModel(from_code, to_code) + translatedText = marian.translate([text]) + return translatedText[0] + # Use Argos "English in the Middle" if not in Argos and Marian by Default + elif (Path(f"{PATH}/translator/argos_models/translate-{from_code}_en.argosmodel").exists() and \ + Path(f"{PATH}/translator/argos_models/translate-{to_code}_en.argosmodel").exists()) or \ + (Path(f"{PATH}/translator/argos_models/translate-en_{from_code}.argosmodel").exists() and \ + Path(f"{PATH}/translator/argos_models/translate-en_{to_code}.argosmodel").exists()): + translatedText = argostranslate.translate.translate(text, from_code, to_code) + return translatedText + # If a package doesn't exist + else: + return "Translation Unavailable:" + from_code + to_code + + def do_GET(self): + self.send_response(200) + self.send_header("Content-Type", "application/json") + self.end_headers() + self.wfile.write(self.get_response().encode("utf-8")) + + def get_response(self): + return json.dumps( + { + "translate_data" : self.translate_data if self.query_data else "", + }, + ensure_ascii=False + ) + + +def port_open(port): + #connect_ex returns 0 if it connects to a socket meaning port is closed + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: + return s.connect_ex(('localhost', port)) != 0 + +def start_server(port): + try: + server = HTTPServer(("127.0.0.1", port), WebRequestHandler) + server.timeout = TIMEOUT + server.handle_timeout = lambda: (_ for _ in ()).throw(TimeoutError()) + print(f"Serving at port: {port}", file=sys.stderr) + print(f"Server started at {time.strftime('%I:%M')} with timeout: {TIMEOUT} seconds", file=sys.stderr) + while(True): server.handle_request() + except TimeoutError: + print("Translation server timed out") + sys.exit() + +if __name__ == "__main__": + install_packages() + for port in PORTS: + if(port_open(port)): + start_server(port) + + From 2c4240e0a43457d3f73eccdb23a5d8729101d2a4 Mon Sep 17 00:00:00 2001 From: Harrison Shu Date: Thu, 9 May 2024 10:15:23 -0700 Subject: [PATCH 10/20] refactored response map using the Break out Method Object --- .../ui/controllers/MedicalController.java | 23 ++------ .../translation/TranslationResponseMap.java | 56 +++++++++++++++++++ 2 files changed, 62 insertions(+), 17 deletions(-) create mode 100644 app/femr/util/translation/TranslationResponseMap.java diff --git a/app/femr/ui/controllers/MedicalController.java b/app/femr/ui/controllers/MedicalController.java index 4d7221b20..78744ff59 100644 --- a/app/femr/ui/controllers/MedicalController.java +++ b/app/femr/ui/controllers/MedicalController.java @@ -19,6 +19,7 @@ import femr.util.DataStructure.Mapping.TabFieldMultiMap; import femr.util.DataStructure.Mapping.VitalMultiMap; import femr.util.stringhelpers.StringUtils; +import femr.util.translation.TranslationResponseMap; import play.data.Form; import play.data.FormFactory; import play.libs.Json; @@ -267,32 +268,19 @@ public Result translateGet() { // retrieve current patient encounter encounter int patientId = Integer.parseInt(request().getQueryString("patientId")); ServiceResponse currentEncounterByPatientId = searchService.retrieveRecentPatientEncounterItemByPatientId(patientId); - if (currentEncounterByPatientId.hasErrors()) { throw new RuntimeException(); } PatientEncounterItem patientEncounter = currentEncounterByPatientId.getResponseObject(); String fromLanguage = patientEncounter.getLanguageCode(); - // add whether the language is rtl to response - List rtlLanguages = Arrays.asList("he", "ar"); - Map responseMap = new HashMap<>(); - responseMap.put("toLanguageIsRtl", rtlLanguages.contains(toLanguage)); - responseMap.put("fromLanguageIsRtl", rtlLanguages.contains(fromLanguage)); - - // if same to same (like en to en) don't translate - if (Objects.equals(toLanguage, fromLanguage)) { - responseMap.put("translation", "SameToSame"); - } else { - responseMap.put("translation", translate(text, fromLanguage,toLanguage)); - } + // Harrison Shu: Handles the creation of the response map and figures out whether or not to translate + TranslationResponseMap responseMapObject = new TranslationResponseMap(fromLanguage, toLanguage, text); - return ok(Json.toJson(responseMap)); + return ok(responseMapObject.getResponseJson()); } -// Calls Python Script to translate - private String translate(String text, String fromLanguage, String toLanguage) { - + public String translate(String text, String fromLanguage, String toLanguage) { String data = ""; try { data = BackEndControllerHelper.translate(text, fromLanguage, toLanguage); @@ -302,6 +290,7 @@ private String translate(String text, String fromLanguage, String toLanguage) { return data; } + /** * Get the populated partial view that represents 1 row of new prescription fields * - meant to be an AJAX call diff --git a/app/femr/util/translation/TranslationResponseMap.java b/app/femr/util/translation/TranslationResponseMap.java new file mode 100644 index 000000000..d67ada956 --- /dev/null +++ b/app/femr/util/translation/TranslationResponseMap.java @@ -0,0 +1,56 @@ +package femr.util.translation; +import femr.ui.controllers.BackEndControllerHelper; +import java.util.*; +import play.libs.Json; + + +// Harrison Shu +// represents the Response item that is returned from the backend Java GET Endpoint +public class TranslationResponseMap { + List rtlLanguages = Arrays.asList("he", "ar"); + private String toLanguage; + private String fromLanguage; + private String text; + Map responseMap = new HashMap<>(); + + public TranslationResponseMap(String fromLanguage, String toLanguage, String text) { + this.fromLanguage = fromLanguage; + this.toLanguage = toLanguage; + this.text = text; + this.populateResponseMap(); + } + + private void populateResponseMap() { + populateIsRtl(); + populateTranslation(); + } + + private void populateIsRtl() { + responseMap.put("toLanguageIsRtl", rtlLanguages.contains(toLanguage)); + responseMap.put("fromLanguageIsRtl", rtlLanguages.contains(fromLanguage)); + } + + private void populateTranslation() { + // if same to same (like en to en) don't translate + if (Objects.equals(toLanguage, fromLanguage)) { + responseMap.put("translation", "SameToSame"); + } else { + String data = ""; + try { + data = BackEndControllerHelper.translate(text, fromLanguage, toLanguage); + } catch (Exception e) { + e.printStackTrace(); + } + responseMap.put("translation", data); + } + } + + private Map getResponseMap() { + return this.responseMap; + } + + public com.fasterxml.jackson.databind.JsonNode getResponseJson() { + return Json.toJson(responseMap); + } + +} From 010a1078ffaefed5438b3b589f52cc72dc306287 Mon Sep 17 00:00:00 2001 From: SeanHershey Date: Thu, 9 May 2024 17:09:20 -0700 Subject: [PATCH 11/20] fixed to arabic only one field translating error by always backup translating --- public/js/medical/medical.js | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/public/js/medical/medical.js b/public/js/medical/medical.js index b7193fa17..33dbcbe6a 100644 --- a/public/js/medical/medical.js +++ b/public/js/medical/medical.js @@ -354,22 +354,13 @@ $(document).ready(function () { if (response.translation.split(":")[0] === "SameToSame") { // same to same (like en to en) - // option 1 - delete button $("#toggleBtn").remove(); - // option 2 - say original - //$("#loading").remove(); - //$("#toggleBtn").text("Original"); - } else if (response.translation.split(".")[0] === "Translation Unavailable") { - // option 1 - end buffering $("#loading").remove(); $("#toggleBtn").text("Unavailable"); - // option 2 - delete button - // $("#toggleBtn").remove(); console.error(response.translation); - - } else if (listTranslated.length !== jsonObj.length) { - console.log("backup translation required out of 16 tabs ", listTranslated.length, " recovered"); + } else if (listTranslated.length !== jsonObj.length || response.toLanguageIsRtl) { + console.log("backup translation required (", listTranslated.length, "out of 16 tabs recovered)"); for (let i = 0; i < jsonObj.length; i++) { $.ajax({ type: 'get', From c4b37cd0b65fee4b72fbf143f74fc65cc0d9c02d Mon Sep 17 00:00:00 2001 From: noah1013 Date: Tue, 14 May 2024 21:31:57 -0700 Subject: [PATCH 12/20] Changed license check script to view current directory instead of femr/femr/LICENSE --- .github/workflows/license_check.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/license_check.yml b/.github/workflows/license_check.yml index c0774e9ee..d04c6e28e 100644 --- a/.github/workflows/license_check.yml +++ b/.github/workflows/license_check.yml @@ -13,11 +13,11 @@ jobs: uses: actions/checkout@v2 - name: List contents of femr directory - run: ls -laR femr + run: ls -laR . - name: Check if file exists run: | - if [ ! -f "femr/LICENSE" ]; then + if [ ! -f "./LICENSE" ]; then echo "File does not exist. Exiting with failure." exit 1 fi From c7c5491a55434fa34711ef690c5aa77637fca174 Mon Sep 17 00:00:00 2001 From: noah1013 <51393548+noah1013@users.noreply.github.com> Date: Tue, 14 May 2024 21:35:07 -0700 Subject: [PATCH 13/20] Delete LICENSE --- LICENSE | 636 -------------------------------------------------------- 1 file changed, 636 deletions(-) delete mode 100644 LICENSE diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 0d3ff251a..000000000 --- a/LICENSE +++ /dev/null @@ -1,636 +0,0 @@ -fEMR - fast Electronic Medical Records -Copyright (C) 2014 Team fEMR - -fEMR is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -fEMR is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License (below) for more details. - - - - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS From 69e53e9545b7b51efab7615952353382431f2e4e Mon Sep 17 00:00:00 2001 From: noah1013 Date: Tue, 14 May 2024 21:38:14 -0700 Subject: [PATCH 14/20] Added LICENSE back to test pathing script --- LICENSE | 636 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 636 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..0d3ff251a --- /dev/null +++ b/LICENSE @@ -0,0 +1,636 @@ +fEMR - fast Electronic Medical Records +Copyright (C) 2014 Team fEMR + +fEMR is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +fEMR is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License (below) for more details. + + + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS From c7abfde93204c2a1973cee5c36fd5335e1ef6d5a Mon Sep 17 00:00:00 2001 From: noah1013 Date: Tue, 14 May 2024 21:40:23 -0700 Subject: [PATCH 15/20] Removed debug code to license_check.yml --- .github/workflows/license_check.yml | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/.github/workflows/license_check.yml b/.github/workflows/license_check.yml index d04c6e28e..3cb6cfedd 100644 --- a/.github/workflows/license_check.yml +++ b/.github/workflows/license_check.yml @@ -12,22 +12,9 @@ jobs: - name: Checkout code uses: actions/checkout@v2 - - name: List contents of femr directory - run: ls -laR . - - name: Check if file exists run: | if [ ! -f "./LICENSE" ]; then echo "File does not exist. Exiting with failure." exit 1 - fi -# - name: Check LICENSE file existence in femr directory -# id: check_license -# uses: andstor/file-existence-action@v3 -# with: -# files: "femr/LICENSE" -# fail: true -# -# - name: Fail if LICENSE does not exist in femr directory -# if: steps.check_license.outputs.files_exists == 'false' -# run: exit 1 \ No newline at end of file + fi \ No newline at end of file From a52f8feff58dfd95be23f0bb83e125a87bb089f6 Mon Sep 17 00:00:00 2001 From: SeanHershey Date: Wed, 15 May 2024 09:58:42 -0700 Subject: [PATCH 16/20] added register user functionality on login page in preparation for language choice --- app/femr/ui/controllers/HomeController.java | 4 +- .../ui/controllers/SessionsController.java | 74 ++++++++++-- .../ui/models/sessions/CreateViewModel.java | 48 ++++++++ app/femr/ui/views/sessions/create.scala.html | 110 +++++++++++++++++- conf/routes | 1 + public/css/login.css | 18 ++- public/img/logo_color.png | Bin 31998 -> 54292 bytes public/img/logo_color_sm.png | Bin 10672 -> 12058 bytes 8 files changed, 239 insertions(+), 16 deletions(-) diff --git a/app/femr/ui/controllers/HomeController.java b/app/femr/ui/controllers/HomeController.java index ab57cb8a4..32f863c6a 100644 --- a/app/femr/ui/controllers/HomeController.java +++ b/app/femr/ui/controllers/HomeController.java @@ -9,6 +9,8 @@ import play.mvc.Controller; import play.mvc.Result; +import java.util.ArrayList; + public class HomeController extends Controller { private final AssetsFinder assetsFinder; @@ -28,7 +30,7 @@ public Result index() { return ok(index.render(currentUser, assetsFinder)); } - return ok(create.render(null, 0, assetsFinder)); + return ok(create.render(null, 0, null, assetsFinder, new ArrayList())); } diff --git a/app/femr/ui/controllers/SessionsController.java b/app/femr/ui/controllers/SessionsController.java index 424206193..711b04856 100644 --- a/app/femr/ui/controllers/SessionsController.java +++ b/app/femr/ui/controllers/SessionsController.java @@ -2,14 +2,12 @@ import com.google.inject.Inject; import controllers.AssetsFinder; -import femr.business.services.core.IInternetStatusService; -import femr.business.services.core.ISessionService; -import femr.business.services.core.IUpdatesService; -import femr.business.services.core.IUserService; +import femr.business.services.core.*; import femr.business.services.system.UpdatesService; import femr.common.dtos.CurrentUser; import femr.common.dtos.ServiceResponse; import femr.common.models.InternetStatusItem; +import femr.common.models.UserItem; import femr.data.models.core.INetworkStatus; import femr.data.models.core.IUser; import femr.data.models.mysql.NetworkStatus; @@ -38,16 +36,18 @@ public class SessionsController extends Controller { private final FormFactory formFactory; private final ISessionService sessionsService; private final IUserService userService; + private final IRoleService roleService; private final IUpdatesService internetStatusService; @Inject public SessionsController(AssetsFinder assetsFinder, FormFactory formFactory, ISessionService sessionsService, IUserService userService, - IUpdatesService internetStatusService) { + IRoleService roleService, IUpdatesService internetStatusService) { this.assetsFinder = assetsFinder; this.formFactory = formFactory; this.sessionsService = sessionsService; this.userService = userService; + this.roleService = roleService; this.internetStatusService = internetStatusService; } @@ -56,11 +56,12 @@ public Result createGet() { final Form createViewModelForm = formFactory.form(CreateViewModel.class); + if (currentUser != null) { return redirect(routes.HomeController.index()); } - return ok(create.render(createViewModelForm, 0, assetsFinder)); + return ok(create.render(createViewModelForm, 0,null, assetsFinder, new ArrayList())); } public Result createPost() { @@ -70,7 +71,7 @@ public Result createPost() { ServiceResponse response = sessionsService.createSession(viewModel.getEmail(), viewModel.getPassword(), request().remoteAddress()); if (response.hasErrors()) { - return ok(create.render(createViewModelForm.bindFromRequest(), 1, assetsFinder)); + return ok(create.render(createViewModelForm.bindFromRequest(), 1, null, assetsFinder, new ArrayList())); }else{ IUser user = userService.retrieveById(response.getResponseObject().getId()); user.setLastLogin(dateUtils.getCurrentDateTime()); @@ -100,6 +101,52 @@ public Result createPost() { } + public Result createPostAccount() { + CurrentUser currentUser = sessionsService.retrieveCurrentUserSession(); + + final Form createViewModelForm = formFactory.form(CreateViewModel.class); + Form form = createViewModelForm.bindFromRequest(); + + ServiceResponse> roleServiceResponse = roleService.retrieveAllRoles(); + if (roleServiceResponse.hasErrors()){ + throw new RuntimeException(); + } + List messages = new ArrayList<>(); + + if (!form.field("email").getValue().isPresent()) { + return badRequest(create.render(form, 2, messages, assetsFinder, roleServiceResponse.getResponseObject())); + } + + if (form.field("email").getValue().isPresent() && + !form.field("email").getValue().get().matches("^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$")) { + messages.add("Invalid Email"); + return badRequest(create.render(form, 2, messages, assetsFinder, roleServiceResponse.getResponseObject())); + } + + if (form.hasErrors()) { + return badRequest(create.render(form, 2, messages, assetsFinder, roleServiceResponse.getResponseObject())); + } else { + CreateViewModel viewModel = form.bindFromRequest().get(); + UserItem user = createUserItem(viewModel); + + ServiceResponse response = userService.createUser(user, viewModel.getPassword(), 0); + if (response.hasErrors()) { + messages.add(response.getErrors().get("")); + return ok(create.render(form, 2, messages, assetsFinder, roleServiceResponse.getResponseObject())); + } + else + //added user's last name to be displayed[FEMR-161] + //Contributed by Harsha Peswani during the CEN5035 course at FSU + if (StringUtils.isNullOrWhiteSpace(viewModel.getLastName())) + messages.add("An account for " + user.getFirstName() + " was created successfully. You may begin creating a new user."); + else + messages.add("An account for " + user.getFirstName() + " "+ user.getLastName() +" was created successfully. You may begin creating a new user."); + + + return ok(create.render(form, 0, messages, assetsFinder, roleServiceResponse.getResponseObject())); + } + } + public Result editPasswordGet(IUser user){ final Form createViewModelForm = formFactory.form(CreateViewModel.class); @@ -165,4 +212,17 @@ public Result delete() { return redirect(routes.HomeController.index()); } + + private UserItem createUserItem(CreateViewModel viewModel) { + UserItem user = new UserItem(); + user.setFirstName(viewModel.getFirstName()); + user.setLastName(viewModel.getLastName()); + user.setEmail(viewModel.getEmail()); + user.setDeleted(true); + user.setPasswordReset(false); + user.setNotes(viewModel.getNotes()); + user.setRoles(viewModel.getRoles()); + user.setDateCreated(viewModel.getDateCreated()); + return user; + } } diff --git a/app/femr/ui/models/sessions/CreateViewModel.java b/app/femr/ui/models/sessions/CreateViewModel.java index 5e9ad6e2e..57d6613cd 100644 --- a/app/femr/ui/models/sessions/CreateViewModel.java +++ b/app/femr/ui/models/sessions/CreateViewModel.java @@ -18,12 +18,24 @@ */ package femr.ui.models.sessions; +import femr.util.stringhelpers.StringUtils; +import play.data.validation.ValidationError; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; + public class CreateViewModel { private String email; private String password; //used for password reset private String newPassword; private String newPasswordVerify; + private String firstName; + private String lastName; + private List roles; + private String notes; + private String DateCreated; //Sam Zanni public String getEmail() { return email; @@ -56,4 +68,40 @@ public String getNewPasswordVerify() { public void setNewPasswordVerify(String newPasswordVerify) { this.newPasswordVerify = newPasswordVerify; } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getNotes() { + return notes; + } + + public void setNotes(String notes) { + this.notes = notes; + } + + public List getRoles() { + return roles; + } + + public void setRoles(List roles) { + this.roles = roles; + } + + public String getDateCreated() { return DateCreated; } //Sam Zanni + + public void setDateCreated(String DateCreated) { this.DateCreated = DateCreated; } //Sam Zanni } diff --git a/app/femr/ui/views/sessions/create.scala.html b/app/femr/ui/views/sessions/create.scala.html index 22084e0a6..1f5ca23e2 100644 --- a/app/femr/ui/views/sessions/create.scala.html +++ b/app/femr/ui/views/sessions/create.scala.html @@ -1,17 +1,22 @@ -@(createForm: Form[femr.ui.models.sessions.CreateViewModel], errorMsg: Integer, assets: AssetsFinder) +@(createForm: Form[femr.ui.models.sessions.CreateViewModel], + errorMsg: Integer, + messages: java.util.List[_ <: java.lang.String], + assets: AssetsFinder, + availableRoles: java.util.List[_ <: java.lang.String]) @import femr.ui.views.html.layouts.main @import femr.ui.controllers.routes.SessionsController +@import femr.ui.controllers.admin.routes.UsersController + @styles = { } -@main("Login", styles = styles, assets = assets) { - @if(errorMsg.equals(1)){ -
-

Login Attempt Failed! Try again.

-
+ + @additionalScripts = { + } +@main("Login", styles = styles, assets = assets) { @helper.form(action = SessionsController.createPost(), 'class -> "form-signin") {

Please sign in

@@ -22,6 +27,99 @@

Please sign in

} +
+ } + @helper.form(action = SessionsController.createPostAccount(), 'class -> "form-signin") { +
+

OR

+ + + @if(errorMsg.equals(2)){ + @main("Add User", styles = styles, assets = assets, scripts = additionalScripts) { +
+ @helper.form(action = UsersController.createPost(), 'class -> "form-horizontal", 'name -> "createForm") { + + @helper.inputText(createForm("email"), + 'class -> "fInput", + 'placeholder -> "Email Address", + '_label -> "Email Address", + '_isRequired -> true + ) + + @helper.inputPassword(createForm("password"), + 'class -> "fInput", + 'placeholder -> "Password", + '_label -> "Password", + '_isRequired -> true + ) + + + @helper.inputPassword(createForm("passwordVerify"), + 'class -> "fInput", + 'placeholder -> "Verify Password", + '_label -> null, + 'type -> "password" + ) + + @helper.inputText(createForm("firstName"), + 'class -> "fInput", + 'placeholder -> "First Name", + '_label -> "First Name", + '_isRequired -> true + ) + + @helper.inputText(createForm("lastName"), + 'class -> "fInput", + 'placeholder -> "Last Name", + '_label -> "Last Name", + '_isRequired -> false + ) + + @helper.inputText(createForm("notes"), + 'class -> "fInput", + 'placeholder -> "About User", + '_label -> "About User", + '_isRequired -> false + ) + +
+ + + @for(error <- createForm("roles").errors) { +

@error.message

+ } + +
+ @for(role <- availableRoles) { + +
+ } +
+
+ +
+ + @for(message <- messages) { +

@message

+ } + + + } + } + } + + @if(errorMsg.equals(1)){ +
+

Login Attempt Failed! Try again.

+
+ } else { +
+
+
+ } +
} diff --git a/conf/routes b/conf/routes index 7a49ded87..19f242e7d 100644 --- a/conf/routes +++ b/conf/routes @@ -99,6 +99,7 @@ GET /pdf/encounter/:encounterId @femr.ui.controll GET /logout @femr.ui.controllers.SessionsController.delete() POST /login/reset @femr.ui.controllers.SessionsController.editPasswordPost() POST /login @femr.ui.controllers.SessionsController.createPost() +POST /register @femr.ui.controllers.SessionsController.createPostAccount() GET /login @femr.ui.controllers.SessionsController.createGet() #Reference GET /reference @femr.ui.controllers.ReferenceController.indexGet() diff --git a/public/css/login.css b/public/css/login.css index a16c664e8..9230d4a53 100644 --- a/public/css/login.css +++ b/public/css/login.css @@ -20,7 +20,7 @@ .form-signin { max-width: 500px; - padding: 15px; + padding: 0 15px; margin: 0 auto; } @@ -38,7 +38,7 @@ margin: 0px auto; /*background:#f0f0f0;*/ - padding: 6% 4%; + padding: 0% 4%; } @media (max-width: 410px){ #login{ @@ -90,4 +90,18 @@ input[type="submit"] { input[type="submit"]:hover { background: #f90000; +} + +h1 { + padding-top: 20%; + text-align: center; +} + +h2 { + text-align: center; + font-size: medium; +} + +#emptymsg { + margin-top: 100px; } \ No newline at end of file diff --git a/public/img/logo_color.png b/public/img/logo_color.png index 3146e3bc3edee3d8457102b713ed7865ae8cdcc3..354d426bc170616dec552640a2a55ae8bd2f0ab4 100644 GIT binary patch literal 54292 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 WoXXDZC1)G}0000 Date: Wed, 15 May 2024 12:32:22 -0700 Subject: [PATCH 17/20] Add license checker functionality to work on all branches --- .github/workflows/license_check.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/license_check.yml b/.github/workflows/license_check.yml index 3cb6cfedd..65a22518f 100644 --- a/.github/workflows/license_check.yml +++ b/.github/workflows/license_check.yml @@ -2,8 +2,6 @@ name: Check for LICENSE File in femr Directory on: push: - branches: - - temr-dev-noah jobs: check-license-file: From c3b3346e1985d23407b377f15c54ac087c7cc761 Mon Sep 17 00:00:00 2001 From: noah1013 <51393548+noah1013@users.noreply.github.com> Date: Wed, 15 May 2024 12:35:26 -0700 Subject: [PATCH 18/20] Delete LICENSE --- LICENSE | 636 -------------------------------------------------------- 1 file changed, 636 deletions(-) delete mode 100644 LICENSE diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 0d3ff251a..000000000 --- a/LICENSE +++ /dev/null @@ -1,636 +0,0 @@ -fEMR - fast Electronic Medical Records -Copyright (C) 2014 Team fEMR - -fEMR is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -fEMR is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License (below) for more details. - - - - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS From 185800906b05d5e68131802d56318d59bbdfb799 Mon Sep 17 00:00:00 2001 From: noah1013 Date: Wed, 15 May 2024 12:38:31 -0700 Subject: [PATCH 19/20] Ensure functionality of license checker script --- LICENSE | 636 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 636 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..0d3ff251a --- /dev/null +++ b/LICENSE @@ -0,0 +1,636 @@ +fEMR - fast Electronic Medical Records +Copyright (C) 2014 Team fEMR + +fEMR is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +fEMR is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License (below) for more details. + + + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS From f354bbca53d72a8d430779d70775de7515979f2f Mon Sep 17 00:00:00 2001 From: DJump13 Date: Wed, 15 May 2024 23:21:04 -0700 Subject: [PATCH 20/20] working docker build from project Dockerfile --- Dockerfile | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4f90cf525..33966b605 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,7 +24,8 @@ RUN mkdir -p $PROJECT_HOME/activator $PROJECT_HOME/app WORKDIR $PROJECT_WORKPLACE/activator # Install Play Framework -RUN curl -O http://downloads.typesafe.com/typesafe-activator/1.3.6/typesafe-activator-1.3.6.zip +RUN curl -O https://downloads.typesafe.com/typesafe-activator/1.3.6/typesafe-activator-1.3.6.zip + RUN unzip typesafe-activator-1.3.6.zip -d / && rm typesafe-activator-1.3.6.zip && ls && sudo chmod a+x /activator-dist-1.3.6/activator ENV PATH $PATH:/activator-1.3.6 @@ -35,11 +36,16 @@ RUN \ # Install sbt RUN \ - curl -L -o sbt-$SBT_VERSION.deb https://dl.bintray.com/sbt/debian/sbt-$SBT_VERSION.deb && \ + mkdir /working/ && \ + cd /working/ && \ + curl -L -o sbt-$SBT_VERSION.deb https://repo.scala-sbt.org/scalasbt/debian/sbt-$SBT_VERSION.deb && \ dpkg -i sbt-$SBT_VERSION.deb && \ rm sbt-$SBT_VERSION.deb && \ apt-get update && \ - apt-get install sbt + apt-get install sbt && \ + cd && \ + rm -r /working/ && \ + sbt sbtVersion # Setup path variables and copy fEMR into container ENV PATH $PROJECT_HOME/activator/activator-dist-1.3.10/bin:$PATH