From 119e0bb888f286607ccd834b1841ebdce1ca1caf Mon Sep 17 00:00:00 2001 From: Agnibho Mondal Date: Thu, 2 Nov 2023 10:04:11 +0530 Subject: [PATCH] JS Port of MedScript --- COPYING | 674 ++++++++++++++++++++++++++++ README | 214 +++++++++ README.md | 24 - package-lock.json | 242 ++++++++-- package.json | 7 +- public/favicon.ico | Bin 4286 -> 86506 bytes public/index.html | 9 + public/template/default.html | 104 +++++ public/template/medcert.html | 76 ++++ src/App.vue | 127 +++++- src/assets/logo.png | Bin 6849 -> 0 bytes src/assets/logo.svg | 95 ++++ src/components/EditScreen.vue | 291 ++++++++++++ src/components/HelloWorld.vue | 58 --- src/components/HomeScreen.vue | 107 +++++ src/components/PrescriberScreen.vue | 81 ++++ src/components/RenderScreen.vue | 49 ++ src/main.js | 9 + vue.config.js | 3 +- 19 files changed, 2028 insertions(+), 142 deletions(-) create mode 100644 COPYING create mode 100644 README delete mode 100644 README.md create mode 100644 public/template/default.html create mode 100644 public/template/medcert.html delete mode 100644 src/assets/logo.png create mode 100644 src/assets/logo.svg create mode 100644 src/components/EditScreen.vue delete mode 100644 src/components/HelloWorld.vue create mode 100644 src/components/HomeScreen.vue create mode 100644 src/components/PrescriberScreen.vue create mode 100644 src/components/RenderScreen.vue diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/COPYING @@ -0,0 +1,674 @@ + 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 + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program 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. + + This program 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 for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README b/README new file mode 100644 index 0000000..2498486 --- /dev/null +++ b/README @@ -0,0 +1,214 @@ +MedScript Lite +============== + +MedScript Lite is a medical prescription writing software. It is primarily for +medical practitioners for writing prescriptions. + +MedScript Lite is the JavaScript implementation of MedScript. It has a limited +feature set. But it can run on any device with a modern web browser. + +The purpose of the program is to enable medical practitioners to prepare +computerized prescriptions. The program has been designed after the commonly +used prescription format among the medical practitioners in India. +Inclusion of prescription style of other regions will hopefully be implemented +in future updates. + +File +---- + +The program uses a custom file format mpaz (Medical Prescription Archive - +Zipped). It is a zip file in a specific format which includes: + +1. A meta.json file containing file type and mpaz version. +2. A prescription.zip file containing the actual prescription. +3. An attachment folder containing attached files. +4. A template folder containing the bundled prescription template. This +feature is not supported in MedScript Lite. + +Optionally the mpaz archive may also include an S/MIME signature and +certificate for authentication, but it is not implemented in MedScript Lite. + +The structure of the mpaz file is as follows: + + .mpaz (zipped file) + |-- meta.json (e.g. {"type": "MedScript", "version": ""}) + |-- prescription.json (Prescription object in JSON format) + |-- template (included template for rendering) + | |-- index.html (Jinja2 template) + | |-- + |-- attachment (directory containing attachments) + | |-- + |-- signature (optional: S/MIME signature) + |-- certificate.pem (optional: full certificate chain including end-user, intermediates and root certificate) + +Install +------- + +To use MedScript Lite, you can git repository and build the app from source. +The following commands can be run in a GNU/Linux terminal. + +1. Clone the git repository. + + git clone https://code.agnibho.com/repo/medscript-lite.git + +2. Enter the cloned directory. + + cd medscript-lite + +3. Run the app. + + npm run serve + +This will create a local web server and serve the app from there. It can be accessed +at localhost:8080 from any modern web browser in the local system. + +4. Build the app (optional). + + npm run build + +This will create a "dist" directory containing the compiled app. This +directory maybe placed in a server for online use. + +Usage +----- + +MedScript Lite has a very intuitive interface. + +The home screen contains the options to open a file, create a new file, +editing prescriber information and the information about the app. + +### Creating a prescription + +A new prescription can be created by clicking on the "New" button. The +prescription editing screen will open. The required data can be entered in the +form. + +The parts of a prescription are as follows: +1. ID +2. Name +3. Age +4. Sex +5. Address +6. Contact +7. Diagnosis +8. Extra (any extra data about the patient. can also be used to certify) +9. DAW (dispense as written) +10. Mode (consultation mode e.g. tele-consultation) +11. Note (clinical notes) +12. Report (available reports) +13. Advice +14. Investigation +15. Medication +16. Additional +17. Attachment (files can be attached with the prescription from this option) + +After editing the "Save" button below can be used to save the data in a +mpaz file and download it. The "Render" button will render the prescription +into a printable format. The "Cancel" button can be used to cancel the edits +and return to the home screen. + +### Opening a prescription + +The home screen has the option of opening a prescription. A prescription can +be opened by selecting the file in the home screen and clicking the "Open" +button. + +### Rendering a prescription + +The prescriptions can be rendered and subsequently printed. To render a +prescription, click on the "Render" button in the edit screen. The rendered +prescription can be printed or converted to PDF by using the print to pdf +option in the browser. + +### Template + +The program uses nunjucks (similar to Jinja2) template for rendering the +prescription. Two templates (one for default prescription and one for medical +certificates) are included with the app. Custom templates are not supported. + +Note that MedScript Lite do not include the templates in the mpaz file. + +### Medical Certificate + +The Certify/Extra area can be used to write a medical prescription. Select the +medical certificate template from the edit screen for proper rendering. + +Prescriber +---------- + +The data of the practitioner is stored locally in the browser. To view or edit +the prescriber information, click the "Prescriber" button in the home screen. + +The following information can be entered about the prescriber: + +1. Name +2. Qualification +3. Registration +4. Address +5. Contact +6. Extra + +Prescription Object +------------------- + +The program uses a Prescription object to store the prescription data. The +structure of the Prescription object is as follows: + + prescription (Prescription object) + |-- date (string: date-time in the %Y-%m-%d %H:%M:%S format) + |-- id (string: the id of the prescription) + |-- name (string: the name of the patient) + |-- age (string: the age of the patient, may contain unit) + |-- sex (string: sex of the patient) + |-- address (string: address of the patient) + |-- contact (string: contact number / email of the patient) + |-- extra (string: extra data related to the prescription, may also be used for writing certificates) + |-- mode (string: the mode of consultation e.g. tele-consultation) + |-- daw (boolean: dispense as written) + |-- diagnosis (string: diagnosis of the patient's condition) + |-- note (string: clinical note e.g. history, physical examination) + |-- report (string: available reports) + |-- advice (string: advice given to the patient, not the medications) + |-- investigation (string: investigations suggested for the patient) + |-- medication (string: the list of medications prescribed) + |-- additional (string: any additional advice/instructions) + |-- prescriber (Prescriber object) + | |-- name (string: the name of the prescriber) + | |-- qualification (string: the qualification of the prescriber) + | |-- registration (string: the registration number of the prescriber) + | |-- address (string: the address of the prescriber) + | |-- contact (string: contact number / email of the prescriber) + | |-- extra (string: any extra data about the prescriber) + +Website +------- + + + +License +------- + +MedScript Lite + +Copyright (C) 2023 Dr. Agnibho Mondal + +MedScript Lite 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. + +MedScript Lite 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 for more details. + +You should have received a copy of the GNU General Public License along with +MedScript Lite. If not, see . + +Contact +------- + +Dr. Agnibho Mondal + +mondal@agnibho.com + +www.agnibho.com diff --git a/README.md b/README.md deleted file mode 100644 index 9e0298c..0000000 --- a/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# medscript-lite - -## Project setup -``` -npm install -``` - -### Compiles and hot-reloads for development -``` -npm run serve -``` - -### Compiles and minifies for production -``` -npm run build -``` - -### Lints and fixes files -``` -npm run lint -``` - -### Customize configuration -See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/package-lock.json b/package-lock.json index c2d477e..6070920 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,12 @@ "name": "medscript-lite", "version": "0.1.0", "dependencies": { + "@popperjs/core": "^2.11.8", + "bootstrap": "^5.3.2", "core-js": "^3.8.3", + "jszip": "^3.10.1", + "nunjucks": "^3.2.4", + "nunjucks-date-filter": "^0.1.1", "vue": "^3.2.13" }, "devDependencies": { @@ -16,7 +21,7 @@ "@babel/eslint-parser": "^7.12.16", "@vue/cli-plugin-babel": "~5.0.0", "@vue/cli-plugin-eslint": "~5.0.0", - "@vue/cli-service": "~5.0.0", + "@vue/cli-service": "^5.0.8", "eslint": "^7.32.0", "eslint-plugin-vue": "^8.0.3" } @@ -2023,6 +2028,15 @@ "integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==", "dev": true }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, "node_modules/@sideway/address": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", @@ -3274,6 +3288,11 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "node_modules/a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==" + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -3460,7 +3479,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, + "devOptional": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -3513,6 +3532,11 @@ "node": ">=8" } }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -3703,7 +3727,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, + "devOptional": true, "engines": { "node": ">=8" } @@ -3791,6 +3815,24 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, + "node_modules/bootstrap": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", + "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3805,7 +3847,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, + "devOptional": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -3988,7 +4030,7 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, + "devOptional": true, "funding": [ { "type": "individual", @@ -4015,7 +4057,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, + "devOptional": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -4253,13 +4295,10 @@ "dev": true }, "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "node_modules/commondir": { "version": "1.0.1", @@ -4456,8 +4495,7 @@ "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "node_modules/cosmiconfig": { "version": "7.1.0", @@ -4808,6 +4846,14 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true, + "optional": true, + "peer": true + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -6163,7 +6209,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, + "devOptional": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -6687,6 +6733,15 @@ "node": ">=12" } }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, "node_modules/html-tags": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", @@ -6869,6 +6924,11 @@ "node": ">= 4" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -6907,8 +6967,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ipaddr.js": { "version": "2.1.0", @@ -6929,7 +6988,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, + "devOptional": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -6980,7 +7039,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -7007,7 +7066,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, + "devOptional": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -7028,7 +7087,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.12.0" } @@ -7090,8 +7149,7 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/isexe": { "version": "2.0.0", @@ -7259,6 +7317,44 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -7318,6 +7414,14 @@ "node": ">= 0.8.0" } }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/lilconfig": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", @@ -7966,6 +8070,14 @@ "integrity": "sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q==", "dev": true }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, "node_modules/mrmime": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", @@ -8119,7 +8231,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -8169,6 +8281,46 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, + "node_modules/nunjucks": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz", + "integrity": "sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ==", + "dependencies": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "commander": "^5.1.0" + }, + "bin": { + "nunjucks-precompile": "bin/precompile" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "chokidar": "^3.3.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/nunjucks-date-filter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/nunjucks-date-filter/-/nunjucks-date-filter-0.1.1.tgz", + "integrity": "sha512-xKIMGB+UH1mRnk1/ofAVpU+6Fm52KQWfkCCjMWYohuBTj/Id/qy8zIVuE5lpwtavPyHz96sW2dCawNdPPhn0SQ==", + "dependencies": { + "moment": "^2.9.0" + } + }, + "node_modules/nunjucks/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "engines": { + "node": ">= 6" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -8459,6 +8611,11 @@ "node": ">=6" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, "node_modules/param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", @@ -8596,7 +8753,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, + "devOptional": true, "engines": { "node": ">=8.6" }, @@ -9242,8 +9399,7 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/progress": { "version": "2.0.3", @@ -9454,7 +9610,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, + "devOptional": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -9921,6 +10077,11 @@ "node": ">= 0.4" } }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -10469,12 +10630,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -10576,7 +10731,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, + "devOptional": true, "dependencies": { "is-number": "^7.0.0" }, @@ -10754,8 +10909,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/utila": { "version": "0.4.0", @@ -11051,6 +11205,18 @@ "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", "dev": true }, + "node_modules/vue-template-compiler": { + "version": "2.7.15", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.15.tgz", + "integrity": "sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, "node_modules/vue-template-es2015-compiler": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", diff --git a/package.json b/package.json index fc89f35..293d794 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,12 @@ "lint": "vue-cli-service lint" }, "dependencies": { + "@popperjs/core": "^2.11.8", + "bootstrap": "^5.3.2", "core-js": "^3.8.3", + "jszip": "^3.10.1", + "nunjucks": "^3.2.4", + "nunjucks-date-filter": "^0.1.1", "vue": "^3.2.13" }, "devDependencies": { @@ -16,7 +21,7 @@ "@babel/eslint-parser": "^7.12.16", "@vue/cli-plugin-babel": "~5.0.0", "@vue/cli-plugin-eslint": "~5.0.0", - "@vue/cli-service": "~5.0.0", + "@vue/cli-service": "^5.0.8", "eslint": "^7.32.0", "eslint-plugin-vue": "^8.0.3" }, diff --git a/public/favicon.ico b/public/favicon.ico index df36fcfb72584e00488330b560ebcf34a41c64c2..845ec91186d2d9d12c85441af80ef372d867c9a5 100644 GIT binary patch literal 86506 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 KMtdk~C-pygqMQ~0 literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S diff --git a/public/index.html b/public/index.html index 3e5a139..6428297 100644 --- a/public/index.html +++ b/public/index.html @@ -1,3 +1,12 @@ + + diff --git a/public/template/default.html b/public/template/default.html new file mode 100644 index 0000000..dc86644 --- /dev/null +++ b/public/template/default.html @@ -0,0 +1,104 @@ + + + + + + Prescription + + + + +
+
+ + + + + +
+

{{prescriber.name}}

+

{{prescriber.qualification}}

+

{{prescriber.registration}}

+
+
{{prescriber.address}}
+

{% if prescriber.contact %}Contact: {{prescriber.contact}}{% endif %}

+
{{prescriber.extra}}
+
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + +
{% if id %}ID: {{id}}{% endif %}

Name: {{name}}

Age: {{age}}

Sex: {{sex}}

{% if address %}Address: {{address}}{% endif %} {% if contact %}Contact: {{contact}}{% endif %}
{% if extra %}{{extra}}{% endif %}
+ + + + + + + + + +

Clinical Notes

Advice

+ {% if diagnosis %} + {% if diagnosis_list|length > 1 %} +
    + {% for diag in diagnosis_list %}
  • {{diag}}
  • {% endfor %} +
+ {% else %} +

{{diagnosis}}

+ {% endif %} + {% endif %} + {% if note %}
{{note}}
{% endif %} + {% if report %}
{{report}}
{% endif %} +
+ {% if advice %}
{{advice}}
{% endif %} +
    + {% for med in medication_list %} +
  1. {{med[0]}}
    + {{med[1]}}
  2. +
    + {% endfor %} +
+ {% if investigation %}
{{investigation}}
{% endif %} + {% if additional %}
{{additional}}
{% endif %} +
+
+
+ +
+ + diff --git a/public/template/medcert.html b/public/template/medcert.html new file mode 100644 index 0000000..c81e76e --- /dev/null +++ b/public/template/medcert.html @@ -0,0 +1,76 @@ + + + + + + Prescription + + + + +
+
+ + + + + +
+

{{prescriber.name}}

+

{{prescriber.qualification}}

+

{{prescriber.registration}}

+
+
{{prescriber.address}}
+

{% if prescriber.contact %}Contact: {{prescriber.contact}}{% endif %}

+
{{prescriber.extra}}
+
+
+
+ + + + + + + + +
+ + + + + + + + + + + + +
{% if id %}ID: {{id}}{% endif %}

Name: {{name}}

Age: {{age}}

Sex: {{sex}}

{% if address %}Address: {{address}}{% endif %} {% if contact %}Contact: {{contact}}{% endif %}
+ + + + + + + +
{% if diagnosis %}Provisional Diagnosis: {{diagnosis}}{% endif %}
{{extra}}

+
+
+ +
+ + diff --git a/src/App.vue b/src/App.vue index 591a031..d0fe856 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,26 +1,113 @@ + + - - diff --git a/src/assets/logo.png b/src/assets/logo.png deleted file mode 100644 index f3d2503fc2a44b5053b0837ebea6e87a2d339a43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6849 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 + + + + + + + + + + + + + R + x + + diff --git a/src/components/EditScreen.vue b/src/components/EditScreen.vue new file mode 100644 index 0000000..9770b9b --- /dev/null +++ b/src/components/EditScreen.vue @@ -0,0 +1,291 @@ + + + + diff --git a/src/components/HelloWorld.vue b/src/components/HelloWorld.vue deleted file mode 100644 index 879051a..0000000 --- a/src/components/HelloWorld.vue +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - diff --git a/src/components/HomeScreen.vue b/src/components/HomeScreen.vue new file mode 100644 index 0000000..a5141e3 --- /dev/null +++ b/src/components/HomeScreen.vue @@ -0,0 +1,107 @@ + + + + + + + diff --git a/src/components/PrescriberScreen.vue b/src/components/PrescriberScreen.vue new file mode 100644 index 0000000..b70056c --- /dev/null +++ b/src/components/PrescriberScreen.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/src/components/RenderScreen.vue b/src/components/RenderScreen.vue new file mode 100644 index 0000000..33cc27c --- /dev/null +++ b/src/components/RenderScreen.vue @@ -0,0 +1,49 @@ + + + + diff --git a/src/main.js b/src/main.js index 01433bc..8a8d0de 100644 --- a/src/main.js +++ b/src/main.js @@ -1,3 +1,12 @@ +/* +MedScript Lite +Copyright (C) 2023 Dr. Agnibho Mondal +This file is part of MedScript Lite. +MedScript Lite 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. +MedScript Lite 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 for more details. +You should have received a copy of the GNU General Public License along with MedScript Lite. If not, see . +*/ + import { createApp } from 'vue' import App from './App.vue' diff --git a/vue.config.js b/vue.config.js index 910e297..ac5f533 100644 --- a/vue.config.js +++ b/vue.config.js @@ -1,4 +1,5 @@ const { defineConfig } = require('@vue/cli-service') module.exports = defineConfig({ - transpileDependencies: true + transpileDependencies: true, + publicPath: "./" }) -- 2.39.5