merge-requests/114/head
hussam alhababieh 4 years ago
commit 097d8df8c0

@ -0,0 +1,37 @@
<svg id="discharge_patient" xmlns="http://www.w3.org/2000/svg" width="39.515" height="36.042" viewBox="0 0 39.515 36.042">
<g id="Group_339" data-name="Group 339" transform="translate(0 3.859)">
<g id="Group_338" data-name="Group 338">
<path id="Path_150" data-name="Path 150" d="M38.936,101.209H38.2V93.684a2.9,2.9,0,0,0-2.894-2.894H33.514a2.9,2.9,0,0,0-1.1-1.735V82.494a2.125,2.125,0,0,0-2.122-2.122H26.433a2.125,2.125,0,0,0-2.122,2.122v4.245a.579.579,0,1,0,1.158,0V82.494a.966.966,0,0,1,.965-.965h3.859a.966.966,0,0,1,.965.965v6.04a2.9,2.9,0,0,0-.579-.058H23.153V85.349a2.9,2.9,0,0,0-2.894-2.894H15.05V80.024A2.125,2.125,0,0,0,12.927,77.9H9.068a2.126,2.126,0,0,0-2.036,1.523,6.374,6.374,0,0,1-5.875-6.346.579.579,0,0,0-1.158,0,7.535,7.535,0,0,0,6.946,7.5v7.161A4.038,4.038,0,0,0,8.1,90.573v5.867l-3.375,5.025a.579.579,0,0,0-.1.323V104.1a.579.579,0,0,0,1.158,0v-2.139L9.163,96.94a.578.578,0,0,0,.1-.323V91.4a4.045,4.045,0,0,0,3.473,0v11.93a.579.579,0,0,0,.4.549l2.315.772a.579.579,0,1,0,.366-1.1l-1.919-.64V90.573a4.038,4.038,0,0,0,1.158-2.832V83.613h5.21A1.738,1.738,0,0,1,22,85.349V91.2a6.749,6.749,0,1,0,7.2,5.377h3.223v2.374a2.894,2.894,0,1,0,3.415,3.415h3.107a.579.579,0,0,0,0-1.158ZM11,90.636A2.9,2.9,0,0,1,8.162,88.32h5.672A2.9,2.9,0,0,1,11,90.636Zm2.894-3.473H8.1V80.024a.966.966,0,0,1,.965-.965h1.351V80.8a.579.579,0,0,0,1.158,0V79.059h1.351a.966.966,0,0,1,.965.965Zm11.577,2.47h5.21a1.738,1.738,0,0,1,1.737,1.737v1.737H28.363a2.9,2.9,0,0,1-2.894-2.894Zm-2.315,0h1.158v.579a4.035,4.035,0,0,0,.2,1.247,6.705,6.705,0,0,0-1.355-.258Zm-.579,13.892a5.6,5.6,0,1,1,5.6-5.6A5.6,5.6,0,0,1,22.575,103.525Zm6.27-8.1a6.741,6.741,0,0,0-.6-1.158h4.171v1.158Zm4.149,8.1a1.737,1.737,0,1,1,1.737-1.737A1.738,1.738,0,0,1,32.994,103.525Zm4.052-2.315H35.83a2.9,2.9,0,0,0-2.257-2.257v-7h1.737a1.738,1.738,0,0,1,1.737,1.736Z" transform="translate(0 -72.499)"/>
</g>
</g>
<g id="Group_341" data-name="Group 341" transform="translate(21.996 2.47)">
<g id="Group_340" data-name="Group 340">
<path id="Path_151" data-name="Path 151" d="M291.367,54.5a4.058,4.058,0,0,0-3.935,3.089,2.508,2.508,0,1,0,1.751,4.373,4.051,4.051,0,1,0,2.184-7.462Zm0,1.158A2.9,2.9,0,0,1,294.2,57.94a6.3,6.3,0,0,1-4.036-2.018A2.875,2.875,0,0,1,291.367,55.657Zm-3.859,5.788a1.35,1.35,0,0,1-.188-2.687,4.033,4.033,0,0,0,.976,2.432A1.349,1.349,0,0,1,287.508,61.445Zm3.859,0a2.893,2.893,0,0,1-2.146-4.834,7.445,7.445,0,0,0,4.986,2.493A2.9,2.9,0,0,1,291.367,61.445Z" transform="translate(-285 -54.499)"/>
</g>
</g>
<g id="Group_343" data-name="Group 343" transform="translate(22.162 29.069)">
<g id="Group_342" data-name="Group 342" transform="translate(0 0)">
<ellipse id="Ellipse_143" data-name="Ellipse 143" cx="0.869" rx="0.869"/>
</g>
</g>
<g id="Group_345" data-name="Group 345" transform="translate(18.137 24.851)">
<g id="Group_344" data-name="Group 344">
<path id="Path_152" data-name="Path 152" d="M239.438,344.5a4.438,4.438,0,1,0,4.438,4.438A4.443,4.443,0,0,0,239.438,344.5Zm0,7.718a3.28,3.28,0,1,1,3.28-3.28A3.284,3.284,0,0,1,239.438,352.217Z" transform="translate(-235 -344.499)"/>
</g>
</g>
<g id="Group_347" data-name="Group 347" transform="translate(32.589 32.545)">
<g id="Group_346" data-name="Group 346" transform="translate(0 0)">
<circle id="Ellipse_144" data-name="Ellipse 144" cx="0.869" cy="0.869" r="0.869"/>
</g>
</g>
<g id="Group_349" data-name="Group 349" transform="translate(9.261 3.473)">
<g id="Group_348" data-name="Group 348">
<path id="Path_153" data-name="Path 153" d="M122.894,68.1a.838.838,0,0,1-.684-.356.579.579,0,0,0-.947,0,.838.838,0,0,1-.684.356.579.579,0,1,0,0,1.158,2,2,0,0,0,1.158-.371,2,2,0,0,0,1.158.371.579.579,0,1,0,0-1.158Z" transform="translate(-120 -67.499)"/>
</g>
</g>
<g id="Group_351" data-name="Group 351" transform="translate(6.946)">
<g id="Group_350" data-name="Group 350">
<path id="Path_154" data-name="Path 154" d="M94.052,22.5A4.052,4.052,0,1,0,98.1,26.551,4.056,4.056,0,0,0,94.052,22.5Zm0,6.946a2.894,2.894,0,1,1,2.894-2.894A2.9,2.9,0,0,1,94.052,29.445Z" transform="translate(-90 -22.499)"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="29.959" height="29.962" viewBox="0 0 29.959 29.962">
<path id="home_icon" d="M29.654,13.032l0,0L17.429.808a2.758,2.758,0,0,0-3.9,0L1.313,13.023l-.012.013a2.757,2.757,0,0,0,1.835,4.7c.028,0,.057,0,.085,0h.487v8.994a3.232,3.232,0,0,0,3.228,3.228h4.782a.878.878,0,0,0,.878-.878V22.032a1.475,1.475,0,0,1,1.473-1.473h2.82a1.474,1.474,0,0,1,1.473,1.473v7.052a.878.878,0,0,0,.878.878h4.782a3.232,3.232,0,0,0,3.228-3.228V17.739H27.7a2.759,2.759,0,0,0,1.952-4.708ZM28.411,15.69a1,1,0,0,1-.709.294H26.372a.878.878,0,0,0-.878.878v9.872a1.474,1.474,0,0,1-1.473,1.473h-3.9V22.032A3.232,3.232,0,0,0,16.889,18.8h-2.82a3.232,3.232,0,0,0-3.229,3.228v6.174h-3.9a1.474,1.474,0,0,1-1.473-1.473V16.862a.878.878,0,0,0-.878-.878H3.279l-.041,0a1,1,0,0,1-.691-1.711h0L14.77,2.049a1,1,0,0,1,1.418,0L28.407,14.268l.006.005A1,1,0,0,1,28.411,15.69Zm0,0" transform="translate(-0.499)"/>
</svg>

After

Width:  |  Height:  |  Size: 913 B

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="29.959" height="29.961" viewBox="0 0 29.959 29.961">
<path id="home_icon_active" d="M29.654,13.032l0,0L17.429.808a2.758,2.758,0,0,0-3.9,0L1.313,13.023l-.012.013a2.757,2.757,0,0,0,1.835,4.7c.028,0,.057,0,.085,0h.487v8.994a3.232,3.232,0,0,0,3.228,3.228h4.782a.878.878,0,0,0,.878-.878V22.032a1.475,1.475,0,0,1,1.473-1.473h2.82a1.474,1.474,0,0,1,1.473,1.473v7.052a.878.878,0,0,0,.878.878h4.782a3.232,3.232,0,0,0,3.228-3.228V17.739H27.7a2.759,2.759,0,0,0,1.952-4.708ZM28.411,15.69a1,1,0,0,1-.709.294H26.372a.878.878,0,0,0-.878.878v9.872a1.474,1.474,0,0,1-1.473,1.473h-3.9V22.032A3.232,3.232,0,0,0,16.889,18.8h-2.82a3.232,3.232,0,0,0-3.229,3.228v6.174h-3.9a1.474,1.474,0,0,1-1.473-1.473V16.862a.878.878,0,0,0-.878-.878H3.279l-.041,0a1,1,0,0,1-.691-1.711h0L14.77,2.049a1,1,0,0,1,1.418,0L28.407,14.268l.006.005A1,1,0,0,1,28.411,15.69Zm0,0" transform="translate(-0.5)" fill="#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 930 B

@ -0,0 +1,6 @@
<svg id="in_patient_white" xmlns="http://www.w3.org/2000/svg" width="37.21" height="30.421" viewBox="0 0 37.21 30.421">
<circle id="Ellipse_138" data-name="Ellipse 138" cx="0.659" cy="0.659" r="0.659" transform="translate(12.182 9.632) rotate(-5.682)"/>
<circle id="Ellipse_139" data-name="Ellipse 139" cx="0.659" cy="0.659" r="0.659" transform="translate(16.665 9.63) rotate(-5.682)"/>
<path id="Path_67" data-name="Path 67" d="M188.5,219.565H186.52a.55.55,0,1,0,0,1.1H188.5a.55.55,0,0,0,0-1.1Z" transform="translate(-172.455 -207.002)"/>
<path id="Path_68" data-name="Path 68" d="M36.175,49.19h-1.66V47.8h2.145a.55.55,0,0,0,0-1.1H8.408a.55.55,0,0,0,0,1.1H33.415V49.19h-1.66a1.035,1.035,0,0,0-1.034,1.034v4.783a3.246,3.246,0,0,0,1.69,2.847l-.359.577a2.948,2.948,0,0,0-.13,2.864l1.493,2.97a1.842,1.842,0,0,1-.38,2.155L30.3,68.891v-10.6a1.537,1.537,0,0,0-1.535-1.535H27.178a5.358,5.358,0,0,0-.184-.794,1.373,1.373,0,0,1-.032-.7l.405-1.88a1.072,1.072,0,0,0-1.274-1.273c-.57.075-1.964.569-2.545.356a5.392,5.392,0,0,0-.664-.174.55.55,0,0,0-.21,1.079,4.277,4.277,0,0,1,.527.138,2.465,2.465,0,0,0,1.3.069l1.786-.385-.4,1.838c-.206.788.27,1.637.254,2.548v5.685a4.283,4.283,0,0,1-.2,1.3,2.453,2.453,0,0,0-.091.408A6.988,6.988,0,0,0,21.2,63.208H18.846v-.54a5.31,5.31,0,0,0,1.526-2.8,3.008,3.008,0,0,0,1.719-1.849A2.109,2.109,0,0,0,20.9,55.3h0a1.337,1.337,0,0,0-.428-.067V52.613a2.9,2.9,0,0,0-2.895-2.895H12.7a2.9,2.9,0,0,0-2.864,2.476H8.425c-.777-.079-1.563.392-2.412.311l-1.828-.394a1.072,1.072,0,0,0-1.273,1.274l.405,1.88a1.372,1.372,0,0,1-.032.7,5.355,5.355,0,0,0-.184.794H1.707V48.989A1.186,1.186,0,0,1,2.891,47.8H5.88a.55.55,0,0,0,0-1.1H2.891A2.286,2.286,0,0,0,.607,48.989v8.084A1.532,1.532,0,0,0,0,58.293L.014,76.165a.962.962,0,0,0,.961.961H29.332a.962.962,0,0,0,.961-.961l.008-5.791,3.474-3.143.007-.007A2.947,2.947,0,0,0,34.4,63.77L32.9,60.8a1.842,1.842,0,0,1,.081-1.789l.5-.8a3.255,3.255,0,0,0,.484.036h0a3.245,3.245,0,0,0,2.774-1.563,3.4,3.4,0,0,0,.47-1.681V50.224A1.035,1.035,0,0,0,36.175,49.19Zm-6.972,9.1V69.886l-.6.544q-.188-.17-.382-.331A6.973,6.973,0,0,0,27.151,66.5a3.551,3.551,0,0,1-.162-1.609,5.379,5.379,0,0,0,.252-1.63V57.857h1.526a.436.436,0,0,1,.436.436Zm-16.67,5.192a5.328,5.328,0,0,0,5.213,0v1a.452.452,0,0,1-.451.451H12.984a.452.452,0,0,1-.451-.451Zm8.028-7.142a1.02,1.02,0,0,1,.485,1.334c-.187.575-.774,1.159-1.185,1.18a.55.55,0,0,0-.518.484,4.233,4.233,0,0,1-8.406,0,.55.55,0,0,0-.518-.484c-.411-.021-1-.605-1.185-1.18a1.02,1.02,0,0,1,.485-1.334.2.2,0,0,1,.058-.013c.036,0,.068.026.132.116a.549.549,0,0,0,.615.2c.284-.081.436-.481.382-.863a2.114,2.114,0,0,1,2.112-2.112h4.245a2.114,2.114,0,0,1,2.112,2.112c-.012.293-.034.683.382.863a.549.549,0,0,0,.615-.2c.095-.133.119-.125.19-.1Zm-9.656-3.731a1.8,1.8,0,0,1,1.8-1.8h4.878a1.8,1.8,0,0,1,1.8,1.8v.759a3.2,3.2,0,0,0-2.112-.795H13.017a3.2,3.2,0,0,0-2.112.795Zm-5.123.967a2.469,2.469,0,0,0,1.3-.069,4.271,4.271,0,0,1,1.348-.217H9.806v1.938a1.33,1.33,0,0,0-.428.067,2.109,2.109,0,0,0-1.19,2.719,3.006,3.006,0,0,0,1.719,1.849,5.31,5.31,0,0,0,1.526,2.8v.54H9.075a6.988,6.988,0,0,0-4.646,1.763,2.458,2.458,0,0,0-.091-.408,4.283,4.283,0,0,1-.2-1.3V57.58c-.047-.786.458-1.643.254-2.548L4,53.195ZM1.1,58.293a.436.436,0,0,1,.436-.436h1.5v5.409A5.379,5.379,0,0,0,3.29,64.9,3.7,3.7,0,0,1,3.128,66.5a6.973,6.973,0,0,0-1.069,3.6q-.329.274-.641.572a4.505,4.505,0,0,0-.319.339V58.293ZM29.194,76.027H1.113V73.968a3.477,3.477,0,0,1,1.065-2.5,10.937,10.937,0,0,1,5.46-2.843.55.55,0,1,0-.212-1.079,12,12,0,0,0-4.185,1.69,5.927,5.927,0,0,1,5.834-4.931h2.359v.176a1.552,1.552,0,0,0,1.55,1.55H17.3a1.552,1.552,0,0,0,1.55-1.55v-.176H21.2a5.927,5.927,0,0,1,5.833,4.924,12.017,12.017,0,0,0-6.524-1.911H10.1a.55.55,0,1,0,0,1.1H20.513a10.918,10.918,0,0,1,6.807,2.363l.016.012q.414.329.8.7a3.482,3.482,0,0,1,1.059,2.493v2.037ZM36.11,50.289v1.516H31.82V50.289Zm-.169,5.551a2.237,2.237,0,0,1-1.976,1.311,2.147,2.147,0,0,1-2.145-2.145V52.9h4.29v2.1A2.138,2.138,0,0,1,35.941,55.841Z" transform="translate(0 -46.705)"/>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

@ -0,0 +1,20 @@
<svg id="lab_results" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28">
<path id="Path_132" data-name="Path 132" d="M112.9,288H112a1.357,1.357,0,0,0,1.355,1.355v-.9A.452.452,0,0,1,112.9,288Zm0,0" transform="translate(-105.677 -271.742)" fill="#fff"/>
<path id="Path_133" data-name="Path 133" d="M208,376h.9v.9H208Zm0,0" transform="translate(-196.258 -354.774)" fill="#fff"/>
<path id="Path_134" data-name="Path 134" d="M144,408h.9v.9H144Zm0,0" transform="translate(-135.871 -384.968)" fill="#fff"/>
<path id="Path_135" data-name="Path 135" d="M88,448h.9v.9H88Zm0,0" transform="translate(-83.032 -422.71)" fill="#fff"/>
<path id="Path_136" data-name="Path 136" d="M200,440h.9v.9H200Zm0,0" transform="translate(-188.71 -415.161)" fill="#fff"/>
<path id="Path_137" data-name="Path 137" d="M120,360h.9v.9H120Zm0,0" transform="translate(-113.226 -339.677)" fill="#fff"/>
<path id="Path_138" data-name="Path 138" d="M8.129,0V6.323H3.613a.9.9,0,0,0-.9.9v.9a.9.9,0,0,0,.9.9v3.2a2.285,2.285,0,0,1-.1.676L.141,23.859A3.2,3.2,0,0,0,3.2,28H28V0ZM3.613,7.226h8.129v.9H3.613Zm8.129,1.806a.9.9,0,0,0,.9-.9v-.9a.9.9,0,0,0-.9-.9h-.9V2.71h7.226V9.935H11.742ZM4.375,13.173a3.2,3.2,0,0,0,.141-.941v-3.2h6.323v3.2a3.2,3.2,0,0,0,.141.941l1.227,3.988h-1.5a3.157,3.157,0,0,0,.133-.9v-.153a3.163,3.163,0,0,0-.451-1.627L7.677,9.961,4.967,14.479a3.161,3.161,0,0,0-.451,1.626v.153a3.142,3.142,0,0,0,.133.9h-1.5Zm3.3,5.343a2.261,2.261,0,0,1-2.258-2.258v-.153a2.257,2.257,0,0,1,.322-1.162l1.936-3.228,1.936,3.227a2.26,2.26,0,0,1,.322,1.162v.153A2.261,2.261,0,0,1,7.677,18.516ZM3.2,27.1a2.275,2.275,0,0,1-2.255-2.71H4.065v-.9H1.2l.278-.9H5.419v-.9H1.758l.278-.9H4.065v-.9H2.314l.556-1.806H5.087a3.154,3.154,0,0,0,5.181,0h2.217l1.865,6.06A2.3,2.3,0,0,1,12.155,27.1Zm23.9,0H14.378a3.192,3.192,0,0,0,.836-3.238L11.844,12.908a2.285,2.285,0,0,1-.1-.676V10.839h7.226V1.806H9.935V6.323h-.9V.9H27.1Zm0,0" fill="#fff"/>
<path id="Path_139" data-name="Path 139" d="M292.968,288a4.968,4.968,0,1,0,4.968,4.968A4.974,4.974,0,0,0,292.968,288Zm0,9.032a4.065,4.065,0,1,1,4.064-4.064A4.069,4.069,0,0,1,292.968,297.032Zm0,0" transform="translate(-271.742 -271.742)" fill="#fff"/>
<path id="Path_140" data-name="Path 140" d="M332.065,328h-2.71v1.355H328v2.71h1.355v1.355h2.71v-1.355h1.355v-2.71h-1.355Zm.452,2.258v.9h-1.355v1.355h-.9v-1.355H328.9v-.9h1.355V328.9h.9v1.355Zm0,0" transform="translate(-309.484 -309.484)" fill="#fff"/>
<path id="Path_141" data-name="Path 141" d="M352,40h.9v.9H352Zm0,0" transform="translate(-332.129 -37.742)" fill="#fff"/>
<path id="Path_142" data-name="Path 142" d="M384,40h4.516v.9H384Zm0,0" transform="translate(-362.323 -37.742)" fill="#fff"/>
<path id="Path_143" data-name="Path 143" d="M352,104h.9v.9H352Zm0,0" transform="translate(-332.129 -98.129)" fill="#fff"/>
<path id="Path_144" data-name="Path 144" d="M384,104h4.516v.9H384Zm0,0" transform="translate(-362.323 -98.129)" fill="#fff"/>
<path id="Path_145" data-name="Path 145" d="M352,72h6.323v.9H352Zm0,0" transform="translate(-332.129 -67.935)" fill="#fff"/>
<path id="Path_146" data-name="Path 146" d="M352,136h6.323v.9H352Zm0,0" transform="translate(-332.129 -128.323)" fill="#fff"/>
<path id="Path_147" data-name="Path 147" d="M352,168h6.323v.9H352Zm0,0" transform="translate(-332.129 -158.516)" fill="#fff"/>
<path id="Path_148" data-name="Path 148" d="M240,224h12.645v.9H240Zm0,0" transform="translate(-226.452 -211.355)" fill="#fff"/>
<path id="Path_149" data-name="Path 149" d="M240,256h12.645v.9H240Zm0,0" transform="translate(-226.452 -241.548)" fill="#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

@ -0,0 +1,22 @@
<svg id="menu_icon" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28">
<g id="Group_375" data-name="Group 375">
<g id="Group_374" data-name="Group 374">
<path id="Path_181" data-name="Path 181" d="M11.387,0H2.329A2.332,2.332,0,0,0,0,2.329v9.059a2.332,2.332,0,0,0,2.329,2.329h9.058a2.332,2.332,0,0,0,2.329-2.329V2.329A2.332,2.332,0,0,0,11.387,0Zm0,12.574H2.329a1.187,1.187,0,0,1-1.186-1.186V2.329A1.187,1.187,0,0,1,2.329,1.143h9.058a1.187,1.187,0,0,1,1.186,1.186v9.059h0A1.187,1.187,0,0,1,11.387,12.574Z"/>
</g>
</g>
<g id="Group_377" data-name="Group 377" transform="translate(14.283)">
<g id="Group_376" data-name="Group 376">
<path id="Path_182" data-name="Path 182" d="M120.614,0h-9.058a2.332,2.332,0,0,0-2.329,2.329v9.059a2.332,2.332,0,0,0,2.329,2.329h9.058a2.332,2.332,0,0,0,2.329-2.329V2.329A2.332,2.332,0,0,0,120.614,0ZM121.8,11.388a1.187,1.187,0,0,1-1.186,1.186h-9.058a1.187,1.187,0,0,1-1.186-1.186V2.329a1.187,1.187,0,0,1,1.186-1.186h9.058A1.187,1.187,0,0,1,121.8,2.329Z" transform="translate(-109.227)"/>
</g>
</g>
<g id="Group_379" data-name="Group 379" transform="translate(0 14.283)">
<g id="Group_378" data-name="Group 378">
<path id="Path_183" data-name="Path 183" d="M11.387,109.227H2.329A2.332,2.332,0,0,0,0,111.556v9.059a2.332,2.332,0,0,0,2.329,2.329h9.058a2.332,2.332,0,0,0,2.329-2.329v-9.059A2.332,2.332,0,0,0,11.387,109.227Zm0,12.574H2.329a1.187,1.187,0,0,1-1.186-1.186v-9.059a1.187,1.187,0,0,1,1.186-1.186h9.058a1.187,1.187,0,0,1,1.186,1.186v9.059h0A1.187,1.187,0,0,1,11.387,121.8Z" transform="translate(0 -109.227)"/>
</g>
</g>
<g id="Group_381" data-name="Group 381" transform="translate(14.283 14.283)">
<g id="Group_380" data-name="Group 380">
<path id="Path_184" data-name="Path 184" d="M120.614,109.227h-9.058a2.332,2.332,0,0,0-2.329,2.329v9.059a2.332,2.332,0,0,0,2.329,2.329h9.058a2.332,2.332,0,0,0,2.329-2.329v-9.059A2.332,2.332,0,0,0,120.614,109.227Zm1.186,11.388a1.187,1.187,0,0,1-1.186,1.186h-9.058a1.187,1.187,0,0,1-1.186-1.186v-9.059a1.187,1.187,0,0,1,1.186-1.186h9.058a1.187,1.187,0,0,1,1.186,1.186Z" transform="translate(-109.227 -109.227)"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -0,0 +1,22 @@
<svg id="menu_icon_active" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28">
<g id="Group_375" data-name="Group 375">
<g id="Group_374" data-name="Group 374">
<path id="Path_181" data-name="Path 181" d="M11.387,0H2.329A2.332,2.332,0,0,0,0,2.329v9.059a2.332,2.332,0,0,0,2.329,2.329h9.058a2.332,2.332,0,0,0,2.329-2.329V2.329A2.332,2.332,0,0,0,11.387,0Zm0,12.574H2.329a1.187,1.187,0,0,1-1.186-1.186V2.329A1.187,1.187,0,0,1,2.329,1.143h9.058a1.187,1.187,0,0,1,1.186,1.186v9.059h0A1.187,1.187,0,0,1,11.387,12.574Z" fill="#fff"/>
</g>
</g>
<g id="Group_377" data-name="Group 377" transform="translate(14.283)">
<g id="Group_376" data-name="Group 376">
<path id="Path_182" data-name="Path 182" d="M120.614,0h-9.058a2.332,2.332,0,0,0-2.329,2.329v9.059a2.332,2.332,0,0,0,2.329,2.329h9.058a2.332,2.332,0,0,0,2.329-2.329V2.329A2.332,2.332,0,0,0,120.614,0ZM121.8,11.388a1.187,1.187,0,0,1-1.186,1.186h-9.058a1.187,1.187,0,0,1-1.186-1.186V2.329a1.187,1.187,0,0,1,1.186-1.186h9.058A1.187,1.187,0,0,1,121.8,2.329Z" transform="translate(-109.227)" fill="#fff"/>
</g>
</g>
<g id="Group_379" data-name="Group 379" transform="translate(0 14.283)">
<g id="Group_378" data-name="Group 378">
<path id="Path_183" data-name="Path 183" d="M11.387,109.227H2.329A2.332,2.332,0,0,0,0,111.556v9.059a2.332,2.332,0,0,0,2.329,2.329h9.058a2.332,2.332,0,0,0,2.329-2.329v-9.059A2.332,2.332,0,0,0,11.387,109.227Zm0,12.574H2.329a1.187,1.187,0,0,1-1.186-1.186v-9.059a1.187,1.187,0,0,1,1.186-1.186h9.058a1.187,1.187,0,0,1,1.186,1.186v9.059h0A1.187,1.187,0,0,1,11.387,121.8Z" transform="translate(0 -109.227)" fill="#fff"/>
</g>
</g>
<g id="Group_381" data-name="Group 381" transform="translate(14.283 14.283)">
<g id="Group_380" data-name="Group 380">
<path id="Path_184" data-name="Path 184" d="M120.614,109.227h-9.058a2.332,2.332,0,0,0-2.329,2.329v9.059a2.332,2.332,0,0,0,2.329,2.329h9.058a2.332,2.332,0,0,0,2.329-2.329v-9.059A2.332,2.332,0,0,0,120.614,109.227Zm1.186,11.388a1.187,1.187,0,0,1-1.186,1.186h-9.058a1.187,1.187,0,0,1-1.186-1.186v-9.059a1.187,1.187,0,0,1,1.186-1.186h9.058a1.187,1.187,0,0,1,1.186,1.186Z" transform="translate(-109.227 -109.227)" fill="#fff"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="23.333" viewBox="0 0 28 23.333">
<g id="message_icon" transform="translate(0 -42.667)">
<g id="Group_368" data-name="Group 368" transform="translate(0 42.667)">
<path id="Path_161" data-name="Path 161" d="M27.6,43.7a2.333,2.333,0,0,0-1.937-1.031H2.333A2.333,2.333,0,0,0,0,45V63.667A2.333,2.333,0,0,0,2.333,66H25.909A2.333,2.333,0,0,0,28,63.667V45A2.333,2.333,0,0,0,27.6,43.7Zm-25.27-.1H25.667a1.4,1.4,0,0,1,.905.331l-1.811,1.727-7.635,7.275-2.828,2.7a.467.467,0,0,1-.555,0l-2.87-2.7-9.473-9A1.4,1.4,0,0,1,2.333,43.6Zm-1.4,1.176L9.875,53.26.933,61.8V45A1.393,1.393,0,0,1,.933,44.776ZM27.067,63.667a1.4,1.4,0,0,1-1.223,1.4H2.333a1.4,1.4,0,0,1-1.4-1.4v-.593l9.618-9.17,2.571,2.445a1.4,1.4,0,0,0,.2.135,1.363,1.363,0,0,0,.677.182,1.47,1.47,0,0,0,.933-.327l2.539-2.417,9.595,9.142Zm0-18.667V61.777l-8.941-8.5,8.941-8.507A1.433,1.433,0,0,1,27.067,45Z" transform="translate(0 -42.667)"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 975 B

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="23.333" viewBox="0 0 28 23.333">
<g id="message_icon_active" transform="translate(0 -42.667)">
<g id="Group_368" data-name="Group 368" transform="translate(0 42.667)">
<path id="Path_161" data-name="Path 161" d="M27.6,43.7a2.333,2.333,0,0,0-1.937-1.031H2.333A2.333,2.333,0,0,0,0,45V63.667A2.333,2.333,0,0,0,2.333,66H25.909A2.333,2.333,0,0,0,28,63.667V45A2.333,2.333,0,0,0,27.6,43.7Zm-25.27-.1H25.667a1.4,1.4,0,0,1,.905.331l-1.811,1.727-7.635,7.275-2.828,2.7a.467.467,0,0,1-.555,0l-2.87-2.7-9.473-9A1.4,1.4,0,0,1,2.333,43.6Zm-1.4,1.176L9.875,53.26.933,61.8V45A1.393,1.393,0,0,1,.933,44.776ZM27.067,63.667a1.4,1.4,0,0,1-1.223,1.4H2.333a1.4,1.4,0,0,1-1.4-1.4v-.593l9.618-9.17,2.571,2.445a1.4,1.4,0,0,0,.2.135,1.363,1.363,0,0,0,.677.182,1.47,1.47,0,0,0,.933-.327l2.539-2.417,9.595,9.142Zm0-18.667V61.777l-8.941-8.5,8.941-8.507A1.433,1.433,0,0,1,27.067,45Z" transform="translate(0 -42.667)" fill="#fff"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 994 B

@ -0,0 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" width="38.934" height="37.964" viewBox="0 0 38.934 37.964">
<g id="operations" transform="translate(0 -6.332)">
<g id="Group_385" data-name="Group 385" transform="translate(2.911 24.24)">
<path id="Path_185" data-name="Path 185" d="M82.448,419.768h26.3a17.161,17.161,0,0,0-26.3,0Z" transform="translate(-79.04 -400.326)" fill="#b8382c"/>
<path id="Path_186" data-name="Path 186" d="M45.522,239.98l-1.66,1.66h-.031a5.847,5.847,0,0,0-5.847,5.847V251.7l9.631-9.631Z" transform="translate(-37.984 -239.98)" fill="#b8382c"/>
</g>
<path id="Path_187" data-name="Path 187" d="M125.992,27.381l.7-.7a1.9,1.9,0,0,0,1.213.447,1.927,1.927,0,0,0,1.353-.56l.579-.579a1.911,1.911,0,0,0,3.1.579l2.193-2.193,6.058,2.753h5.652v1.84h4.905V17.929H146.84v1.84h-.972l-5.339-5.339-1-.588,3.5-3.5a2.347,2.347,0,0,0-3.32-3.32L134.936,11.8h-2.093a2.448,2.448,0,0,0-1.664.651l-7.031,6.49a1.891,1.891,0,0,0,.525,3.122l-2,2Zm-1.586-3.32,1.649-1.649A2.145,2.145,0,0,0,127.641,24l-1.649,1.649Zm3.986,1.638a.708.708,0,0,1-.818.1l1.738-1.738h.719Zm3.679,0a.688.688,0,0,1-1.174-.486.682.682,0,0,1,.2-.486l.666-.666h1.945Zm16-6.544h2.453V27.74h-2.453V19.155Zm-8.347-3.8,5.64,5.64h1.48V25.9h-5.386l-6.745-3.066h-6.571a.92.92,0,1,1,0-1.84h4.6l1.561-.3a2.619,2.619,0,0,0,1.928-3.549l2.41-2.41Zm-4.537,2.835a1.409,1.409,0,0,1-1.125,1.3l-.221.044Zm5.4-10.3a1.121,1.121,0,0,1,1.914.793,1.114,1.114,0,0,1-.328.793l-10.3,10.3H128.7ZM125.5,20.995h-.069a.666.666,0,0,1-.452-1.155l7.031-6.49a1.22,1.22,0,0,1,.832-.326h.866l-7.86,7.86A.657.657,0,0,1,125.5,20.995Z" transform="translate(-113.27 0)" fill="#fff"/>
<path id="Path_188" data-name="Path 188" d="M38.391,360.362c-.063-.107-6.454-10.726-18.924-10.726S.606,360.255.543,360.362L0,361.286H38.934Zm-36.162-.3c1.828-2.5,7.627-9.2,17.238-9.2s15.409,6.7,17.238,9.2Z" transform="translate(0 -316.991)" fill="#fff"/>
<rect id="Rectangle_177" data-name="Rectangle 177" width="2.453" height="1.226" transform="translate(18.241 35.098)" fill="#fff"/>
<rect id="Rectangle_178" data-name="Rectangle 178" width="2.453" height="1.226" transform="translate(14.33 37.014) rotate(160.007)" fill="#fff"/>
<rect id="Rectangle_179" data-name="Rectangle 179" width="2.453" height="1.226" transform="matrix(-0.766, 0.643, -0.643, -0.766, 8.578, 39.839)" fill="#fff"/>
<rect id="Rectangle_180" data-name="Rectangle 180" width="1.226" height="2.453" transform="matrix(-0.643, 0.766, -0.766, -0.643, 33.018, 40.476)" fill="#fff"/>
<rect id="Rectangle_181" data-name="Rectangle 181" width="1.226" height="2.453" transform="translate(27.33 36.698) rotate(109.999)" fill="#fff"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

@ -0,0 +1,5 @@
<svg id="out_patient" xmlns="http://www.w3.org/2000/svg" width="33.545" height="33.544" viewBox="0 0 33.545 33.544">
<path id="Path_55" data-name="Path 55" d="M32.921,17.231H24.432a3.234,3.234,0,0,0,.832-4.611,10.233,10.233,0,0,0,.624-3.5V7.771a6.771,6.771,0,0,0-10.28-5.79,6.771,6.771,0,0,0-10.28,5.79v.12l-.541-.947L2.435,11.06a2.705,2.705,0,0,0,2.933,3.949A3.249,3.249,0,0,0,8.207,17.75a7.593,7.593,0,0,0,4.7,5.466v1.138l-4.538.826A8.965,8.965,0,0,0,1,34v.541H30.216V34a8.965,8.965,0,0,0-7.365-8.824l-4.538-.826V23.217A7.537,7.537,0,0,0,21.235,21.2c.027.012.056.017.082.03a3.113,3.113,0,0,0,1.388.328H32.921a1.625,1.625,0,0,0,1.623-1.623V18.854A1.625,1.625,0,0,0,32.921,17.231Zm-9.766-.609c.01-.158.028-.315.028-.473v-3.71a2.155,2.155,0,0,1-.028,4.183ZM6.41,9.116V7.771a5.688,5.688,0,0,1,8.844-4.733l.354.236.354-.236a5.688,5.688,0,0,1,8.844,4.733V9.116a9.166,9.166,0,0,1-.4,2.687,3.228,3.228,0,0,0-1.22-.474v-.86L21.018,8.845V7.492A1.083,1.083,0,0,0,19.936,6.41H11.28A1.083,1.083,0,0,0,10.2,7.492V8.845L8.034,10.468v.858a3.2,3.2,0,0,0-.688.205,2.642,2.642,0,0,0-.206-.471l-.7-1.219c-.018-.24-.032-.482-.032-.725Zm13.527,1.623H11.28V7.492h8.657ZM4.761,13.985A1.6,1.6,0,0,1,3.375,11.6L4.787,9.124,6.2,11.6a1.6,1.6,0,0,1-1.439,2.389Zm1.65.542a2.664,2.664,0,0,0,1.053-1.851,2.119,2.119,0,0,1,.57-.239v3.713c0,.159.014.315.024.472A2.164,2.164,0,0,1,6.41,14.527Zm2.705,1.623v-5.14L10.2,10.2v.541a1.083,1.083,0,0,0,1.082,1.082h8.657a1.083,1.083,0,0,0,1.082-1.082V10.2l1.082.812v5.14a6.546,6.546,0,0,1-.116,1.168,3.114,3.114,0,0,0-.667.242,2.034,2.034,0,0,1-.9.213H16.69a1.623,1.623,0,1,0,0,3.246h3.2A6.482,6.482,0,0,1,9.116,16.149Zm7.575,3.787a.541.541,0,1,1,0-1.082h.541v1.082Zm-3.525,5.47a2.707,2.707,0,0,0,1.8,1.479A2.165,2.165,0,0,1,12.9,28.052c-1.194,0-2.164-.728-2.164-1.623a1.22,1.22,0,0,1,.174-.613Zm15.951,8.056H2.1a7.884,7.884,0,0,1,6.458-7.219l1.136-.207a2.173,2.173,0,0,0-.037.392A3.016,3.016,0,0,0,12.9,29.134a3.453,3.453,0,0,0,2.705-1.213,3.453,3.453,0,0,0,2.705,1.213,3.016,3.016,0,0,0,3.246-2.705,2.212,2.212,0,0,0-.037-.391l1.136.207A7.882,7.882,0,0,1,29.116,33.462ZM20.3,25.816a1.22,1.22,0,0,1,.174.613c0,.895-.971,1.623-2.164,1.623a2.165,2.165,0,0,1-2.066-1.166,2.7,2.7,0,0,0,1.8-1.479Zm-3.072-2.092v.541a1.623,1.623,0,1,1-3.246,0v-.721a7.467,7.467,0,0,0,3.246,0Zm4.57-3.46a3.115,3.115,0,0,0-1.388-.327h-2.1V18.854h2.1a3.122,3.122,0,0,0,1.388-.327,2.034,2.034,0,0,1,.9-.214h7.511v2.164H22.705A2.033,2.033,0,0,1,21.8,20.264Zm11.661-.327a.542.542,0,0,1-.541.541H31.3V18.313h1.623a.542.542,0,0,1,.541.541Z" transform="translate(-1 -1)"/>
<path id="Path_56" data-name="Path 56" d="M0,0H1.082V3.9H0Z" transform="matrix(0.555, -0.832, 0.832, 0.555, 15.936, 12.357)"/>
<path id="Path_57" data-name="Path 57" d="M0,0H3.9V1.082H0Z" transform="matrix(0.832, -0.555, 0.555, 0.832, 9.442, 13.613)"/>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="45.999" height="37.607" viewBox="0 0 45.999 37.607">
<g id="patient" transform="translate(0 -46.705)">
<circle id="Ellipse_155" data-name="Ellipse 155" cx="0.814" cy="0.814" r="0.814" transform="translate(15.059 58.613) rotate(-5.682)" fill="#fff"/>
<circle id="Ellipse_156" data-name="Ellipse 156" cx="0.814" cy="0.814" r="0.814" transform="translate(20.602 58.61) rotate(-5.682)" fill="#fff"/>
<path id="Path_221" data-name="Path 221" d="M189.1,219.565h-2.446a.679.679,0,1,0,0,1.359H189.1a.679.679,0,1,0,0-1.359Z" transform="translate(-169.262 -157.33)" fill="#fff"/>
<path id="Path_222" data-name="Path 222" d="M44.72,49.777H42.667V48.064h2.652a.679.679,0,0,0,0-1.359H10.394a.679.679,0,1,0,0,1.359H41.308v1.713H39.256a1.28,1.28,0,0,0-1.278,1.278v5.912a4.013,4.013,0,0,0,2.089,3.519l-.444.714a3.645,3.645,0,0,0-.161,3.54l1.846,3.671a2.277,2.277,0,0,1-.47,2.664L37.46,74.132V61.03a1.9,1.9,0,0,0-1.9-1.9H33.6a6.623,6.623,0,0,0-.228-.981,1.7,1.7,0,0,1-.04-.865l.5-2.324a1.325,1.325,0,0,0-1.574-1.574c-.7.093-2.428.7-3.146.44a6.666,6.666,0,0,0-.82-.215.68.68,0,0,0-.26,1.334,5.288,5.288,0,0,1,.652.171,3.048,3.048,0,0,0,1.6.085l2.208-.476L32,57c-.255.974.334,2.024.314,3.15v7.028a5.294,5.294,0,0,1-.247,1.6,3.034,3.034,0,0,0-.112.5,8.639,8.639,0,0,0-5.744-2.18H23.3v-.668a6.565,6.565,0,0,0,1.887-3.463,3.718,3.718,0,0,0,2.126-2.286,2.607,2.607,0,0,0-1.471-3.362h0a1.652,1.652,0,0,0-.529-.082V54.008a3.583,3.583,0,0,0-3.579-3.579H15.7a3.584,3.584,0,0,0-3.541,3.061H10.415c-.961-.1-1.932.484-2.981.384l-2.259-.487A1.325,1.325,0,0,0,3.6,54.962l.5,2.324a1.7,1.7,0,0,1-.04.865,6.619,6.619,0,0,0-.228.981H2.11v-9.6a1.466,1.466,0,0,1,1.464-1.464H7.268a.679.679,0,1,0,0-1.359H3.574A2.826,2.826,0,0,0,.751,49.528v9.993A1.894,1.894,0,0,0,0,61.03L.017,83.124a1.19,1.19,0,0,0,1.188,1.188H36.261a1.19,1.19,0,0,0,1.188-1.188l.01-7.159,4.294-3.885.009-.008a3.644,3.644,0,0,0,.759-4.27L40.676,64.13a2.277,2.277,0,0,1,.1-2.212l.613-.985a4.024,4.024,0,0,0,.6.045h0a4.012,4.012,0,0,0,3.429-1.932A4.2,4.2,0,0,0,46,56.968V51.055A1.28,1.28,0,0,0,44.72,49.777ZM36.1,61.03V75.362l-.743.672q-.232-.21-.472-.41a8.62,8.62,0,0,0-1.321-4.443,4.39,4.39,0,0,1-.2-1.988,6.65,6.65,0,0,0,.311-2.015V60.491h1.887a.539.539,0,0,1,.539.539ZM15.493,67.449a6.586,6.586,0,0,0,6.445,0v1.234a.558.558,0,0,1-.558.558h-5.33a.558.558,0,0,1-.558-.558Zm9.925-8.829a1.261,1.261,0,0,1,.6,1.649c-.231.71-.957,1.433-1.465,1.458a.679.679,0,0,0-.641.6,5.233,5.233,0,0,1-10.391,0,.679.679,0,0,0-.641-.6c-.508-.026-1.234-.748-1.465-1.458a1.261,1.261,0,0,1,.6-1.649.246.246,0,0,1,.072-.017c.044,0,.083.032.163.143a.679.679,0,0,0,.76.253c.351-.1.54-.594.473-1.067a2.614,2.614,0,0,1,2.611-2.611H21.34a2.614,2.614,0,0,1,2.611,2.611c-.015.362-.042.845.473,1.067a.679.679,0,0,0,.76-.253c.117-.164.147-.155.235-.126ZM13.481,54.008a2.222,2.222,0,0,1,2.22-2.22h6.03a2.222,2.222,0,0,1,2.22,2.22v.938a3.953,3.953,0,0,0-2.611-.983H16.092a3.953,3.953,0,0,0-2.611.983ZM7.148,55.2a3.052,3.052,0,0,0,1.6-.085,5.28,5.28,0,0,1,1.666-.268h1.707v2.4a1.644,1.644,0,0,0-.529.082,2.607,2.607,0,0,0-1.471,3.362,3.717,3.717,0,0,0,2.126,2.286,6.565,6.565,0,0,0,1.887,3.463v.668H11.219a8.639,8.639,0,0,0-5.744,2.18,3.039,3.039,0,0,0-.112-.5,5.3,5.3,0,0,1-.247-1.6V60.149c-.058-.972.566-2.032.314-3.15l-.49-2.272ZM1.359,61.03a.539.539,0,0,1,.539-.539H3.756v6.686a6.65,6.65,0,0,0,.311,2.015,4.578,4.578,0,0,1-.2,1.988A8.62,8.62,0,0,0,2.546,75.63q-.407.339-.793.707a5.567,5.567,0,0,0-.394.419V61.03ZM36.09,82.953H1.376V80.408a4.3,4.3,0,0,1,1.317-3.09A13.521,13.521,0,0,1,9.443,73.8a.679.679,0,1,0-.263-1.333,14.835,14.835,0,0,0-5.174,2.089,7.327,7.327,0,0,1,7.212-6.1h2.916v.218A1.919,1.919,0,0,0,16.051,70.6h5.33A1.919,1.919,0,0,0,23.3,68.683v-.218h2.916a7.326,7.326,0,0,1,7.211,6.087,14.856,14.856,0,0,0-8.066-2.362H12.481a.679.679,0,1,0,0,1.359H25.358a13.5,13.5,0,0,1,8.415,2.922l.019.015q.512.407.989.867a4.3,4.3,0,0,1,1.31,3.082v2.518Zm8.549-31.817V53.01h-5.3V51.136ZM44.431,58a2.765,2.765,0,0,1-2.443,1.62,2.654,2.654,0,0,1-2.651-2.651v-2.6h5.3v2.6A2.644,2.644,0,0,1,44.431,58Z" fill="#fff"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

@ -0,0 +1 @@
<svg id="Layer_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><g><path d="m496 144c-8.837 0-16-7.164-16-16v-82c0-7.72-6.28-14-14-14h-82c-8.837 0-16-7.164-16-16s7.163-16 16-16h82c25.364 0 46 20.636 46 46v82c0 8.836-7.163 16-16 16z"/><path d="m16 144c-8.837 0-16-7.164-16-16v-82c0-25.364 20.636-46 46-46h82c8.837 0 16 7.164 16 16s-7.163 16-16 16h-82c-7.72 0-14 6.28-14 14v82c0 8.836-7.163 16-16 16z"/><path d="m128 512h-82c-25.364 0-46-20.636-46-46v-82c0-8.836 7.163-16 16-16s16 7.164 16 16v82c0 7.72 6.28 14 14 14h82c8.837 0 16 7.164 16 16s-7.163 16-16 16z"/><path d="m466 512h-82c-8.837 0-16-7.164-16-16s7.163-16 16-16h82c7.72 0 14-6.28 14-14v-82c0-8.836 7.163-16 16-16s16 7.164 16 16v82c0 25.364-20.636 46-46 46z"/><path d="m194 240h-84c-25.364 0-46-20.636-46-46v-84c0-25.364 20.636-46 46-46h84c25.364 0 46 20.636 46 46v84c0 25.364-20.636 46-46 46zm-84-144c-7.72 0-14 6.28-14 14v84c0 7.72 6.28 14 14 14h84c7.72 0 14-6.28 14-14v-84c0-7.72-6.28-14-14-14z"/><path d="m194 448h-84c-25.364 0-46-20.636-46-46v-84c0-25.364 20.636-46 46-46h84c25.364 0 46 20.636 46 46v84c0 25.364-20.636 46-46 46zm-84-144c-7.72 0-14 6.28-14 14v84c0 7.72 6.28 14 14 14h84c7.72 0 14-6.28 14-14v-84c0-7.72-6.28-14-14-14z"/><path d="m402 240h-84c-25.364 0-46-20.636-46-46v-84c0-25.364 20.636-46 46-46h84c25.364 0 46 20.636 46 46v84c0 25.364-20.636 46-46 46zm-84-144c-7.72 0-14 6.28-14 14v84c0 7.72 6.28 14 14 14h84c7.72 0 14-6.28 14-14v-84c0-7.72-6.28-14-14-14z"/><path d="m422 352h-38v-54c0-14.336-11.663-26-26-26h-60c-14.337 0-26 11.664-26 26v60c0 14.336 11.663 26 26 26h54v38c0 14.336 11.663 26 26 26h44c14.337 0 26-11.664 26-26v-44c0-14.336-11.663-26-26-26zm-118-48h48v48h-48zm112 112h-32v-32h32z"/><path d="m160 176h-16c-8.837 0-16-7.164-16-16v-16c0-8.836 7.163-16 16-16h16c8.837 0 16 7.164 16 16v16c0 8.836-7.163 16-16 16z"/><path d="m368 176h-16c-8.837 0-16-7.164-16-16v-16c0-8.836 7.163-16 16-16h16c8.837 0 16 7.164 16 16v16c0 8.836-7.163 16-16 16z"/><path d="m160 384h-16c-8.837 0-16-7.164-16-16v-16c0-8.836 7.163-16 16-16h16c8.837 0 16 7.164 16 16v16c0 8.836-7.163 16-16 16z"/></g></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -0,0 +1,27 @@
<svg xmlns="http://www.w3.org/2000/svg" width="30.516" height="28.567" viewBox="0 0 30.516 28.567">
<g id="radiology" transform="translate(-8.242 -10.661)">
<path id="Path_112" data-name="Path 112" d="M8.513,22.676a.271.271,0,0,1-.211-.44c4.153-5.2,7.237-6.412,10.219-7.582l.186-.073c1.181-.465,1.841-1.7,1.966-3.66a.274.274,0,0,1,.287-.253.271.271,0,0,1,.253.287c-.138,2.192-.915,3.582-2.308,4.13l-.186.073C15.8,16.3,12.788,17.489,8.726,22.575a.271.271,0,0,1-.213.1Z" transform="translate(0 -0.005)" fill="#fff"/>
<path id="Path_113" data-name="Path 113" d="M17.123,74.542l-.033,0a.271.271,0,0,1-.236-.3c.006-.048.588-4.831.586-6.746,0-1.649-.5-6.035-.684-7.564-.708.668-2.181,2.043-2.833,2.546a13.085,13.085,0,0,1-1.2.773l-.357.214a.271.271,0,1,1-.28-.464l.359-.217a12.736,12.736,0,0,0,1.151-.736c.834-.643,3.159-2.857,3.182-2.879a.271.271,0,0,1,.456.162c.031.249.751,6.129.752,8.163,0,1.95-.566,6.614-.59,6.812a.271.271,0,0,1-.268.239Z" transform="translate(-2.701 -35.315)" fill="#fff"/>
<path id="Path_114" data-name="Path 114" d="M85.727,22.671a.271.271,0,0,1-.212-.1c-4.062-5.086-7.078-6.272-9.994-7.418l-.186-.073c-1.394-.549-2.17-1.938-2.308-4.13a.271.271,0,0,1,.542-.034c.124,1.964.785,3.2,1.966,3.66l.185.073C78.7,15.82,81.787,17.031,85.94,22.23a.271.271,0,0,1-.212.44Z" transform="translate(-47.241 0)" fill="#fff"/>
<path id="Path_115" data-name="Path 115" d="M95.8,74.544a.271.271,0,0,1-.268-.237c-.024-.2-.6-4.864-.6-6.813,0-2.035.722-7.914.752-8.163a.271.271,0,0,1,.456-.162c.023.022,2.348,2.236,3.182,2.879a12.8,12.8,0,0,0,1.151.737l.358.215a.271.271,0,0,1-.28.464l-.357-.214a13.11,13.11,0,0,1-1.2-.773c-.652-.5-2.125-1.878-2.833-2.546-.181,1.529-.683,5.915-.684,7.564,0,1.915.59,6.7.6,6.745a.271.271,0,0,1-.235.3l-.034,0Z" transform="translate(-63.215 -35.317)" fill="#fff"/>
<path id="Path_116" data-name="Path 116" d="M43.1,71.94a2.753,2.753,0,0,1-2.63-1.192.542.542,0,0,1,.977-.468c.278.581,1.915.9,3.95.107a.542.542,0,1,1,.395,1.009A7.515,7.515,0,0,1,43.1,71.94Z" transform="translate(-23.459 -43.25)" fill="#fff"/>
<path id="Path_117" data-name="Path 117" d="M40.742,79.181a4.787,4.787,0,0,1-1.557-.247,2.562,2.562,0,0,1-1.522-1.18.542.542,0,1,1,.977-.468,1.529,1.529,0,0,0,.9.623,4.889,4.889,0,0,0,3.768-.463.542.542,0,0,1,.483.969A6.909,6.909,0,0,1,40.742,79.181Z" transform="translate(-21.415 -48.358)" fill="#fff"/>
<path id="Path_118" data-name="Path 118" d="M39.275,87.528a2.189,2.189,0,0,1-1.1-.272,2.481,2.481,0,0,1-.962-2.766.542.542,0,0,1,1.067.186c-.14.805.017,1.4.432,1.64.584.334,1.916.09,3.9-1.6a.542.542,0,0,1,.7.826c-1.836,1.559-3.15,1.986-4.041,1.986Z" transform="translate(-21.076 -53.509)" fill="#fff"/>
<path id="Path_119" data-name="Path 119" d="M68.31,60.346q-.325,0-.666-.014a.542.542,0,0,1,.044-1.083c3.907.159,5.554-1.153,5.675-1.551a.542.542,0,0,1,.99-.437,1.063,1.063,0,0,1-.12,1.1C73.578,59.376,71.512,60.346,68.31,60.346Z" transform="translate(-42.935 -33.766)" fill="#fff"/>
<path id="Path_120" data-name="Path 120" d="M68,53.587H67.91a.542.542,0,1,1,0-1.083c.027,0,.054,0,.081,0,3.116,0,3.665-.645,3.744-.775.023-.038.077-.129-.019-.31a.542.542,0,1,1,.957-.508,1.369,1.369,0,0,1-.011,1.378C72.138,53.163,70.61,53.587,68,53.587Z" transform="translate(-43.115 -29.141)" fill="#fff"/>
<path id="Path_121" data-name="Path 121" d="M60.957,32.12a.542.542,0,0,0-1.076-.089,1.915,1.915,0,0,1-.542.272V30.9a.542.542,0,1,0-1.083,0v1.4a1.9,1.9,0,0,1-.542-.273.542.542,0,0,0-1.076.089c0,.717.881,1.119,1.618,1.329V42a.542.542,0,1,0,1.083,0V33.449C60.076,33.238,60.957,32.836,60.957,32.12Z" transform="translate(-35.291 -14.363)" fill="#fff"/>
<path id="Path_122" data-name="Path 122" d="M50.32,40.445h.028a.542.542,0,1,0,.027-1.083c-1.909-.1-2.479-.576-2.541-.718a.542.542,0,0,0-.967-.487,1.052,1.052,0,0,0,.029,1.029C47.185,39.694,48.013,40.325,50.32,40.445Z" transform="translate(-28.078 -19.841)" fill="#fff"/>
<path id="Path_123" data-name="Path 123" d="M41.749,59.25c-3.91.159-5.554-1.153-5.675-1.551a.542.542,0,0,0-.99-.437,1.063,1.063,0,0,0,.12,1.1c.653,1.018,2.719,1.988,5.922,1.988q.325,0,.666-.014a.542.542,0,0,0-.044-1.083Z" transform="translate(-19.501 -33.766)" fill="#fff"/>
<path id="Path_124" data-name="Path 124" d="M46.395,53.587h.086a.542.542,0,0,0,0-1.083h0c-3.2.008-3.744-.643-3.824-.774-.023-.038-.078-.129.018-.31a.542.542,0,0,0-.957-.508,1.369,1.369,0,0,0,.011,1.377C42.254,53.163,43.781,53.587,46.395,53.587Z" transform="translate(-24.276 -29.141)" fill="#fff"/>
<path id="Path_125" data-name="Path 125" d="M67.623,40.45h.027c2.307-.12,3.135-.751,3.423-1.259a1.051,1.051,0,0,0,.029-1.029.542.542,0,0,0-.967.487c-.062.141-.632.619-2.541.718a.542.542,0,0,0,.027,1.083Z" transform="translate(-42.894 -19.844)" fill="#fff"/>
<path id="Path_126" data-name="Path 126" d="M47.365,44.825h0c-3.014.011-3.528-.6-3.6-.721-.019-.032-.065-.108.018-.266a.542.542,0,1,0-.957-.508,1.327,1.327,0,0,0,.011,1.334c.505.837,1.961,1.246,4.451,1.246h.081a.542.542,0,0,0,0-1.083Z" transform="translate(-25.089 -23.613)" fill="#fff"/>
<path id="Path_127" data-name="Path 127" d="M72.226,43.33a.542.542,0,1,0-.957.508c.084.158.038.234.018.266-.073.121-.585.721-3.524.721-.027,0-.051,0-.079,0a.542.542,0,0,0,0,1.083h.081c2.489,0,3.945-.406,4.451-1.246A1.327,1.327,0,0,0,72.226,43.33Z" transform="translate(-42.949 -23.612)" fill="#fff"/>
<path id="Path_128" data-name="Path 128" d="M70.671,71.945A7.514,7.514,0,0,1,67.98,71.4a.542.542,0,1,1,.395-1.009c2.034.8,3.671.474,3.95-.107a.542.542,0,1,1,.977.468A2.757,2.757,0,0,1,70.671,71.945Z" transform="translate(-43.309 -43.256)" fill="#fff"/>
<path id="Path_129" data-name="Path 129" d="M70.982,79.184a6.909,6.909,0,0,1-3.046-.765.542.542,0,0,1,.483-.969,4.886,4.886,0,0,0,3.768.463,1.529,1.529,0,0,0,.9-.623.542.542,0,1,1,.977.468,2.562,2.562,0,0,1-1.522,1.179,4.788,4.788,0,0,1-1.557.248Z" transform="translate(-43.31 -48.361)" fill="#fff"/>
<path id="Path_130" data-name="Path 130" d="M72.762,87.529c-.89,0-2.205-.427-4.041-1.986a.542.542,0,0,1,.7-.826c1.988,1.689,3.32,1.933,3.9,1.6.415-.237.572-.835.432-1.64a.542.542,0,1,1,1.067-.186,2.481,2.481,0,0,1-.961,2.766A2.191,2.191,0,0,1,72.762,87.529Z" transform="translate(-43.961 -53.509)" fill="#fff"/>
<rect id="Rectangle_157" data-name="Rectangle 157" width="1.361" height="1" rx="0.5" transform="translate(22.841 28.722)" fill="#fff"/>
<rect id="Rectangle_158" data-name="Rectangle 158" width="1.361" height="1" rx="0.5" transform="translate(22.819 30.463)" fill="#fff"/>
<rect id="Rectangle_159" data-name="Rectangle 159" width="1.361" height="1" rx="0.5" transform="translate(22.797 32.205)" fill="#fff"/>
<path id="Path_131" data-name="Path 131" d="M41.306,44.015H23.053a2.938,2.938,0,0,1-2.935-2.935V22.827a2.938,2.938,0,0,1,2.935-2.935H41.306a2.938,2.938,0,0,1,2.935,2.935V41.08A2.938,2.938,0,0,1,41.306,44.015ZM23.053,20.434a2.4,2.4,0,0,0-2.393,2.393V41.08a2.4,2.4,0,0,0,2.393,2.393H41.306A2.4,2.4,0,0,0,43.7,41.08V22.827a2.4,2.4,0,0,0-2.393-2.393Z" transform="translate(-8.66 -6.732)" fill="#fff"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.9 KiB

@ -0,0 +1,6 @@
<svg id="referral" xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 30 30">
<path id="Path_212" data-name="Path 212" d="M46.689,39.083a3.221,3.221,0,0,0,1.692-2.815,3.316,3.316,0,0,0-6.63,0,3.221,3.221,0,0,0,1.692,2.815,4.983,4.983,0,0,0-3.355,4.7v2.234a.5.5,0,0,0,.5.5h8.956a.5.5,0,0,0,.5-.5V43.783a4.982,4.982,0,0,0-3.354-4.7Zm-3.938-2.815A2.316,2.316,0,1,1,45.066,38.5,2.277,2.277,0,0,1,42.751,36.268Zm6.293,9.25H41.087V43.783a3.978,3.978,0,0,1,7.956,0Z" transform="translate(-20.044 -16.518)" fill="#fff"/>
<path id="Path_213" data-name="Path 213" d="M46.691,6.046a3.22,3.22,0,0,0,1.69-2.814,3.316,3.316,0,0,0-6.63,0,3.22,3.22,0,0,0,1.69,2.814,4.983,4.983,0,0,0-3.353,4.7V12.98a.5.5,0,0,0,.5.5h8.956a.5.5,0,0,0,.5-.5V10.746a4.982,4.982,0,0,0-3.353-4.7Zm-3.94-2.814a2.316,2.316,0,0,1,4.629,0,2.316,2.316,0,0,1-4.629,0Zm6.293,9.248H41.087V10.746a3.978,3.978,0,0,1,7.956,0Z" transform="translate(-20.044 0)" fill="#fff"/>
<path id="Path_214" data-name="Path 214" d="M27.26,26.256l2.812-2.423a.5.5,0,0,0-.653-.757L26.3,25.766H22.779a.5.5,0,1,0,0,1H26.3l3.124,2.561a.558.558,0,0,0,.7-.07.487.487,0,0,0-.07-.7Z" transform="translate(-11.14 -11.477)" fill="#fff"/>
<path id="Path_215" data-name="Path 215" d="M8.772,20.858A3.778,3.778,0,0,0,9.7,18.376a3.859,3.859,0,0,0-7.718,0,3.776,3.776,0,0,0,.931,2.482A5.515,5.515,0,0,0,0,25.674v2.941a.5.5,0,0,0,.5.5H11.188a.5.5,0,0,0,.5-.5V25.674A5.516,5.516,0,0,0,8.772,20.858Zm-2.929-5.3a2.821,2.821,0,1,1-2.859,2.82A2.843,2.843,0,0,1,5.844,15.556Zm-.539,6.6a3.92,3.92,0,0,0,.539.042,3.843,3.843,0,0,0,.54-.042v2.339l-.54.691L5.3,24.493Zm5.383,5.96H9.116V25.664a.5.5,0,0,0-1,0v2.451H3.572V25.664a.5.5,0,0,0-1,0v2.451H1V25.674a4.514,4.514,0,0,1,2.744-4.1,3.866,3.866,0,0,0,.561.3v2.961L5.45,26.3a.5.5,0,0,0,.787,0l1.145-1.466V21.877a3.893,3.893,0,0,0,.561-.3,4.516,4.516,0,0,1,2.744,4.1v2.441Z" transform="translate(0 -7.278)" fill="#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="26.003" height="26.615" viewBox="0 0 26.003 26.615">
<g id="scdedule_icon_active" transform="translate(0.333 0.341)">
<path id="Path_216" data-name="Path 216" d="M194.569,281.767a.766.766,0,0,0,1.083,0l2.734-2.734a.766.766,0,1,0-1.083-1.083l-2.192,2.192-1-1a.766.766,0,1,0-1.083,1.083Zm0,0" transform="translate(-183.038 -263.659)" fill="#fff"/>
<path id="Path_217" data-name="Path 217" d="M136.184,211.974a6.079,6.079,0,1,0-6.079-6.079A6.086,6.086,0,0,0,136.184,211.974Zm0-10.626a4.547,4.547,0,1,1-4.548,4.547A4.552,4.552,0,0,1,136.184,201.348Zm0,0" transform="translate(-123.516 -189.696)" fill="#fff"/>
<path id="Path_218" data-name="Path 218" d="M23.462,1.673H22.028V.786a.786.786,0,0,0-1.572,0v.888H18.912V.786a.786.786,0,0,0-1.572,0v.888H8.663V.786a.786.786,0,0,0-1.572,0v.888H5.547V.786a.786.786,0,0,0-1.572,0v.888H2.541A2.544,2.544,0,0,0,0,4.215V24.073a2.544,2.544,0,0,0,2.541,2.541h20.92A2.544,2.544,0,0,0,26,24.073V4.215A2.544,2.544,0,0,0,23.462,1.673Zm.97,22.4a.971.971,0,0,1-.97.97H2.541a.971.971,0,0,1-.97-.97V8.208h22.86ZM1.572,4.215a.971.971,0,0,1,.97-.97H3.975v.888a.786.786,0,0,0,1.572,0V3.245H7.091v.888a.786.786,0,0,0,1.572,0V3.245h8.678v.888a.786.786,0,0,0,1.572,0V3.245h1.544v.888a.786.786,0,0,0,1.572,0V3.245h1.433a.971.971,0,0,1,.97.97V6.636H1.572Zm0,0" transform="translate(-0.333 -0.341)" fill="#fff"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -0,0 +1,5 @@
<svg id="schedule_icon" xmlns="http://www.w3.org/2000/svg" width="26.004" height="26.615" viewBox="0 0 26.004 26.615">
<path id="Path_216" data-name="Path 216" d="M194.615,281.873a.786.786,0,0,0,1.111,0l2.806-2.806a.786.786,0,0,0-1.111-1.112l-2.25,2.25-1.026-1.026a.786.786,0,0,0-1.112,1.112Zm0,0" transform="translate(-182.781 -263.289)"/>
<path id="Path_217" data-name="Path 217" d="M136.344,212.294a6.239,6.239,0,1,0-6.239-6.239A6.246,6.246,0,0,0,136.344,212.294Zm0-10.906a4.667,4.667,0,1,1-4.667,4.667A4.672,4.672,0,0,1,136.344,201.388Zm0,0" transform="translate(-123.342 -189.429)"/>
<path id="Path_218" data-name="Path 218" d="M23.462,1.673H22.029V.786a.786.786,0,1,0-1.572,0v.888H18.913V.786a.786.786,0,0,0-1.572,0v.888H8.663V.786a.786.786,0,0,0-1.572,0v.888H5.547V.786a.786.786,0,0,0-1.572,0v.888H2.541A2.544,2.544,0,0,0,0,4.215V24.074a2.544,2.544,0,0,0,2.541,2.541H23.462A2.544,2.544,0,0,0,26,24.074V4.215A2.544,2.544,0,0,0,23.462,1.673Zm.97,22.4a.971.971,0,0,1-.97.97H2.541a.971.971,0,0,1-.97-.97V8.208h22.86ZM1.572,4.215a.971.971,0,0,1,.97-.97H3.975v.888a.786.786,0,0,0,1.572,0V3.245H7.091v.888a.786.786,0,0,0,1.572,0V3.245h8.678v.888a.786.786,0,0,0,1.572,0V3.245h1.544v.888a.786.786,0,0,0,1.572,0V3.245h1.433a.971.971,0,0,1,.97.97V6.636H1.572Zm0,0" transform="translate(0 0)"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -0,0 +1,32 @@
<svg id="search_patient" xmlns="http://www.w3.org/2000/svg" width="35.865" height="35.865" viewBox="0 0 35.865 35.865">
<g id="Group_321" data-name="Group 321" transform="translate(3.488 3.481)">
<g id="Group_320" data-name="Group 320">
<path id="Path_83" data-name="Path 83" d="M59.849,49.3A10.449,10.449,0,1,0,70.3,59.749,10.461,10.461,0,0,0,59.849,49.3Zm0,19.74a9.291,9.291,0,1,1,9.291-9.291A9.3,9.3,0,0,1,59.849,69.04Z" transform="translate(-49.4 -49.3)"/>
</g>
</g>
<g id="Group_323" data-name="Group 323" transform="translate(6.389 6.389)">
<g id="Group_322" data-name="Group 322">
<path id="Path_84" data-name="Path 84" d="M90.5,98.626h1.158a6.978,6.978,0,0,1,6.968-6.968V90.5A8.132,8.132,0,0,0,90.5,98.626Z" transform="translate(-90.5 -90.5)"/>
</g>
</g>
<g id="Group_325" data-name="Group 325">
<g id="Group_324" data-name="Group 324">
<path id="Path_85" data-name="Path 85" d="M35.046,31.763l.819-.819-8.31-8.317-.819.819-1.454-1.454A13.907,13.907,0,1,0,22,25.289l1.454,1.454-.819.819,8.3,8.3.819-.819-7.484-7.491,3.283-3.283ZM13.93,26.708A12.772,12.772,0,1,1,26.7,13.937,12.791,12.791,0,0,1,13.93,26.708Zm10.343-.8-1.348-1.341a13.923,13.923,0,0,0,1.645-1.645l1.348,1.348Z"/>
</g>
</g>
<g id="Group_327" data-name="Group 327" transform="translate(26.993 26.992)">
<g id="Group_326" data-name="Group 326" transform="translate(0 0)">
<rect id="Rectangle_143" data-name="Rectangle 143" width="1.158" height="1.158" transform="translate(0 0.819) rotate(-45)"/>
</g>
</g>
<g id="Group_329" data-name="Group 329" transform="translate(28.634 28.642)">
<g id="Group_328" data-name="Group 328" transform="translate(0 0)">
<rect id="Rectangle_144" data-name="Rectangle 144" width="1.158" height="1.158" transform="translate(0 0.819) rotate(-45)"/>
</g>
</g>
<g id="Group_331" data-name="Group 331" transform="translate(30.274 30.273)">
<g id="Group_330" data-name="Group 330" transform="translate(0 0)">
<rect id="Rectangle_145" data-name="Rectangle 145" width="1.158" height="1.158" transform="matrix(0.707, -0.707, 0.707, 0.707, 0, 0.819)"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

@ -34,20 +34,6 @@
"male"
]
},
{
"uid": "0bbb324cc39e62b3a4e05639a4f4008f",
"css": "home_icon",
"code": 59394,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M973.1 435L973.1 435 565 27A92 92 0 0 0 434.9 27L27.2 434.7 26.8 435.1A92 92 0 0 0 88 591.9C88.9 591.9 89.9 591.9 90.8 591.9H107.1V892.1A107.9 107.9 0 0 0 214.8 999.9H374.4A29.3 29.3 0 0 0 403.7 970.6V735.3A49.2 49.2 0 0 1 452.9 686.2H547A49.2 49.2 0 0 1 596.2 735.3V970.7A29.3 29.3 0 0 0 625.5 1000H785.1A107.9 107.9 0 0 0 892.8 892.3V592H907.8A92.1 92.1 0 0 0 973 434.9ZM931.6 523.7A33.4 33.4 0 0 1 907.9 533.5H863.5A29.3 29.3 0 0 0 834.2 562.8V892.3A49.2 49.2 0 0 1 785.1 941.4H654.9V735.3A107.9 107.9 0 0 0 547 627.5H452.9A107.9 107.9 0 0 0 345.1 735.2V941.3H215A49.2 49.2 0 0 1 165.8 892.1V562.8A29.3 29.3 0 0 0 136.5 533.5H92.8L91.4 533.5A33.4 33.4 0 0 1 68.4 476.4H68.4L476.3 68.4A33.4 33.4 0 0 1 523.6 68.4L931.4 476.2 931.6 476.4A33.4 33.4 0 0 1 931.6 523.7ZM931.6 523.7",
"width": 1000
},
"search": [
"home_icon"
]
},
{
"uid": "06d6838cdcf6af812f2eb51e0269afc0",
"css": "home_icon_active",
@ -145,6 +131,62 @@
"search": [
"schedule_icon"
]
},
{
"uid": "5a324eddf382f5a1167d7d40325f82c8",
"css": "reject_icon",
"code": 59402,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M681 626.7L554.3 500 681 373.3A38.5 38.5 0 0 0 626.7 318.9L500 445.7 373.3 319A38.5 38.5 0 1 0 318.9 373.3L445.7 500 318.9 626.8A37.2 37.2 0 0 0 318.9 681.1 38.2 38.2 0 0 0 373.3 681.1L500 554.4 626.7 681.1A38.5 38.5 0 0 0 681.1 681.1 38.2 38.2 0 0 0 681 626.7ZM500 67.3A432.5 432.5 0 1 1 194 194 429.8 429.8 0 0 1 500 67.3M500 0A500 500 0 1 0 1000 500 500 500 0 0 0 500 0Z",
"width": 1000
},
"search": [
"reject_icon"
]
},
{
"uid": "2742f64b5e69cc4f39a2dcc5a081ad03",
"css": "approved_icon",
"code": 59403,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M756.3 348.3L714 304.8A9.1 9.1 0 0 0 707.2 302H707.2A8.7 8.7 0 0 0 700.5 304.8L407.2 600.3 300.5 493.5A9.3 9.3 0 0 0 287.1 493.5L244.2 536.3A9.6 9.6 0 0 0 244.2 550L378.8 684.5A42.6 42.6 0 0 0 406.9 698.2 44.6 44.6 0 0 0 434.8 685H435L756.5 362A10.3 10.3 0 0 0 756.3 348.3ZM500 67.3A432.5 432.5 0 1 1 194 194 429.8 429.8 0 0 1 500 67.3M500 0A499.9 499.9 0 1 0 999.9 500 499.9 499.9 0 0 0 500 0Z",
"width": 1000
},
"search": [
"approved_icon"
]
},
{
"uid": "148de09f7fd22c378cdfdbaacaa8e205",
"css": "pending_icon",
"code": 59404,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M809.8 932H797.3C781.5 932 768.2 929.8 766.5 914V913.7C731 583.9 523.3 577.6 523.3 499.9S731.1 415.9 766.5 86V85.9C768.2 70.1 781.5 68 797.3 68H809.8A34.8 34.8 0 0 0 844.7 35.7 34 34 0 0 0 810.7 0H35A34.8 34.8 0 0 0 0 32.3 34 34 0 0 0 34 68H47.2C63 68 76.3 70.2 78.1 85.9V86.2C113.7 416 321.5 422.3 321.5 500S113.7 584 78.3 913.8V914C76.6 929.8 63.3 932 47.5 932H35A34.8 34.8 0 0 0 0.1 964.3 34 34 0 0 0 34.1 1000H810.7A33.9 33.9 0 0 0 844.7 964.3 34.8 34.8 0 0 0 809.8 932ZM197.4 848.9C267 655.2 390.6 678.7 390.6 602.3V467.5C390.6 420.4 301.2 387.6 245.4 311.1A19 19 0 0 1 261.2 281H583.8A18.9 18.9 0 0 1 600 310.6C545.2 387.3 454.2 420.4 454.2 467.4V602.4C454.2 678.1 572.9 657.5 647.8 849 654.7 866.3 649.5 887.8 631.2 887.8H214.1C195.4 887.8 191.1 866.5 197.4 849Z",
"width": 845
},
"search": [
"pending_icon"
]
},
{
"uid": "0bbb324cc39e62b3a4e05639a4f4008f",
"css": "home_icon",
"code": 59394,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M973.1 435L973.1 435 565 27A92 92 0 0 0 434.9 27L27.2 434.7 26.8 435.1A92 92 0 0 0 88 591.9C88.9 591.9 89.9 591.9 90.8 591.9H107.1V892.1A107.9 107.9 0 0 0 214.8 999.9H374.4A29.3 29.3 0 0 0 403.7 970.6V735.3A49.2 49.2 0 0 1 452.9 686.2H547A49.2 49.2 0 0 1 596.2 735.3V970.7A29.3 29.3 0 0 0 625.5 1000H785.1A107.9 107.9 0 0 0 892.8 892.3V592H907.8A92.1 92.1 0 0 0 973 434.9ZM931.6 523.7A33.4 33.4 0 0 1 907.9 533.5H863.5A29.3 29.3 0 0 0 834.2 562.8V892.3A49.2 49.2 0 0 1 785.1 941.4H654.9V735.3A107.9 107.9 0 0 0 547 627.5H452.9A107.9 107.9 0 0 0 345.1 735.2V941.3H215A49.2 49.2 0 0 1 165.8 892.1V562.8A29.3 29.3 0 0 0 136.5 533.5H92.8L91.4 533.5A33.4 33.4 0 0 1 68.4 476.4H68.4L476.3 68.4A33.4 33.4 0 0 1 523.6 68.4L931.4 476.2 931.6 476.4A33.4 33.4 0 0 1 931.6 523.7ZM931.6 523.7",
"width": 1000
},
"search": [
"home_icon"
]
}
]
}

@ -1 +1,2 @@
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig"

@ -1 +1,2 @@
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig"

@ -0,0 +1,90 @@
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
def parse_KV_file(file, separator='=')
file_abs_path = File.expand_path(file)
if !File.exists? file_abs_path
return [];
end
generated_key_values = {}
skip_line_start_symbols = ["#", "/"]
File.foreach(file_abs_path) do |line|
next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
plugin = line.split(pattern=separator)
if plugin.length == 2
podname = plugin[0].strip()
path = plugin[1].strip()
podpath = File.expand_path("#{path}", file_abs_path)
generated_key_values[podname] = podpath
else
puts "Invalid plugin specification: #{line}"
end
end
generated_key_values
end
target 'Runner' do
use_frameworks!
use_modular_headers!
# Flutter Pod
copied_flutter_dir = File.join(__dir__, 'Flutter')
copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework')
copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec')
unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path)
# Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet.
# That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration.
# CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist.
generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig')
unless File.exist?(generated_xcode_build_settings_path)
raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path)
cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR'];
unless File.exist?(copied_framework_path)
FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir)
end
unless File.exist?(copied_podspec_path)
FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir)
end
end
# Keep pod path relative so it can be checked into Podfile.lock.
pod 'Flutter', :path => 'Flutter'
# Plugin Pods
# Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
# referring to absolute paths on developers' machines.
system('rm -rf .symlinks')
system('mkdir -p .symlinks/plugins')
plugin_pods = parse_KV_file('../.flutter-plugins')
plugin_pods.each do |name, path|
symlink = File.join('.symlinks', 'plugins', name)
File.symlink(path, symlink)
pod name, :path => File.join(symlink, 'ios')
end
end
# Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system.
install! 'cocoapods', :disable_input_output_paths => true
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
end

@ -0,0 +1,127 @@
PODS:
- barcode_scan (0.0.1):
- Flutter
- MTBBarcodeScanner
- SwiftProtobuf
- connectivity (0.0.1):
- Flutter
- Reachability
- connectivity_macos (0.0.1):
- Flutter
- device_info (0.0.1):
- Flutter
- Flutter (1.0.0)
- flutter_flexible_toast (0.0.1):
- Flutter
- flutter_plugin_android_lifecycle (0.0.1):
- Flutter
- hexcolor (0.0.1):
- Flutter
- imei_plugin (0.0.1):
- Flutter
- local_auth (0.0.1):
- Flutter
- MTBBarcodeScanner (5.0.11)
- "permission_handler (5.0.0+hotfix.5)":
- Flutter
- Reachability (3.2)
- shared_preferences (0.0.1):
- Flutter
- shared_preferences_macos (0.0.1):
- Flutter
- shared_preferences_web (0.0.1):
- Flutter
- SwiftProtobuf (1.9.0)
- url_launcher (0.0.1):
- Flutter
- url_launcher_macos (0.0.1):
- Flutter
- url_launcher_web (0.0.1):
- Flutter
DEPENDENCIES:
- barcode_scan (from `.symlinks/plugins/barcode_scan/ios`)
- connectivity (from `.symlinks/plugins/connectivity/ios`)
- connectivity_macos (from `.symlinks/plugins/connectivity_macos/ios`)
- device_info (from `.symlinks/plugins/device_info/ios`)
- Flutter (from `Flutter`)
- flutter_flexible_toast (from `.symlinks/plugins/flutter_flexible_toast/ios`)
- flutter_plugin_android_lifecycle (from `.symlinks/plugins/flutter_plugin_android_lifecycle/ios`)
- hexcolor (from `.symlinks/plugins/hexcolor/ios`)
- imei_plugin (from `.symlinks/plugins/imei_plugin/ios`)
- local_auth (from `.symlinks/plugins/local_auth/ios`)
- permission_handler (from `.symlinks/plugins/permission_handler/ios`)
- shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
- shared_preferences_macos (from `.symlinks/plugins/shared_preferences_macos/ios`)
- shared_preferences_web (from `.symlinks/plugins/shared_preferences_web/ios`)
- url_launcher (from `.symlinks/plugins/url_launcher/ios`)
- url_launcher_macos (from `.symlinks/plugins/url_launcher_macos/ios`)
- url_launcher_web (from `.symlinks/plugins/url_launcher_web/ios`)
SPEC REPOS:
https://cdn.cocoapods.org/:
- MTBBarcodeScanner
- Reachability
- SwiftProtobuf
EXTERNAL SOURCES:
barcode_scan:
:path: ".symlinks/plugins/barcode_scan/ios"
connectivity:
:path: ".symlinks/plugins/connectivity/ios"
connectivity_macos:
:path: ".symlinks/plugins/connectivity_macos/ios"
device_info:
:path: ".symlinks/plugins/device_info/ios"
Flutter:
:path: Flutter
flutter_flexible_toast:
:path: ".symlinks/plugins/flutter_flexible_toast/ios"
flutter_plugin_android_lifecycle:
:path: ".symlinks/plugins/flutter_plugin_android_lifecycle/ios"
hexcolor:
:path: ".symlinks/plugins/hexcolor/ios"
imei_plugin:
:path: ".symlinks/plugins/imei_plugin/ios"
local_auth:
:path: ".symlinks/plugins/local_auth/ios"
permission_handler:
:path: ".symlinks/plugins/permission_handler/ios"
shared_preferences:
:path: ".symlinks/plugins/shared_preferences/ios"
shared_preferences_macos:
:path: ".symlinks/plugins/shared_preferences_macos/ios"
shared_preferences_web:
:path: ".symlinks/plugins/shared_preferences_web/ios"
url_launcher:
:path: ".symlinks/plugins/url_launcher/ios"
url_launcher_macos:
:path: ".symlinks/plugins/url_launcher_macos/ios"
url_launcher_web:
:path: ".symlinks/plugins/url_launcher_web/ios"
SPEC CHECKSUMS:
barcode_scan: a5c27959edfafaa0c771905bad0b29d6d39e4479
connectivity: 6e94255659cc86dcbef1d452ad3e0491bb1b3e75
connectivity_macos: e2e9731b6b22dda39eb1b128f6969d574460e191
device_info: d7d233b645a32c40dfdc212de5cf646ca482f175
Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
flutter_flexible_toast: 0547e740cae0c33bb7c51bcd931233f4584e1143
flutter_plugin_android_lifecycle: dc0b544e129eebb77a6bfb1239d4d1c673a60a35
hexcolor: fdfb9c4258ad96e949c2dbcdf790a62194b8aa89
imei_plugin: cb1af7c223ac2d82dcd1457a7137d93d65d2a3cd
local_auth: 25938960984c3a7f6e3253e3f8d962fdd16852bd
MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
permission_handler: 6226fcb78b97c7c7458a95c7346a11d5184fec12
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d
shared_preferences_macos: f3f29b71ccbb56bf40c9dd6396c9acf15e214087
shared_preferences_web: 141cce0c3ed1a1c5bf2a0e44f52d31eeb66e5ea9
SwiftProtobuf: ecbec1be9036d15655f6b3443a1c4ea693c97932
url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef
url_launcher_macos: fd7894421cd39320dce5f292fc99ea9270b2a313
url_launcher_web: e5527357f037c87560776e36436bf2b0288b965c
PODFILE CHECKSUM: 1b66dae606f75376c5f2135a8290850eeb09ae83
COCOAPODS: 1.9.3

@ -9,14 +9,11 @@
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; };
9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
B650DC3076E9D70CB188286A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 93A5F83B23AB032D1E096663 /* Pods_Runner.framework */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
@ -26,8 +23,6 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */,
9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
@ -38,18 +33,20 @@
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
75DD06875D42C7903A76DF9F /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
93A5F83B23AB032D1E096663 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
9D4B7DB43C6A6C849D2387CE /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
E698D7B14B12DF768FE47A1A /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -57,20 +54,27 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */,
3B80C3941E831B6300D905FE /* App.framework in Frameworks */,
B650DC3076E9D70CB188286A /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
7D66D387293CE5376A07EC5F /* Pods */ = {
isa = PBXGroup;
children = (
E698D7B14B12DF768FE47A1A /* Pods-Runner.debug.xcconfig */,
75DD06875D42C7903A76DF9F /* Pods-Runner.release.xcconfig */,
9D4B7DB43C6A6C849D2387CE /* Pods-Runner.profile.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
};
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
3B80C3931E831B6300D905FE /* App.framework */,
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
9740EEBA1CF902C7004384FC /* Flutter.framework */,
9740EEB21CF90195004384FC /* Debug.xcconfig */,
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
9740EEB31CF90195004384FC /* Generated.xcconfig */,
@ -84,6 +88,8 @@
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
7D66D387293CE5376A07EC5F /* Pods */,
F984EB986238F1809678CD84 /* Frameworks */,
);
sourceTree = "<group>";
};
@ -118,6 +124,14 @@
name = "Supporting Files";
sourceTree = "<group>";
};
F984EB986238F1809678CD84 /* Frameworks */ = {
isa = PBXGroup;
children = (
93A5F83B23AB032D1E096663 /* Pods_Runner.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@ -125,12 +139,14 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
986D76F6694E0D6D8C5CDAAB /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
08568E6EE9BA48E55B7C3865 /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
@ -152,6 +168,7 @@
TargetAttributes = {
97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1;
DevelopmentTeam = 3A359E86ZF;
LastSwiftMigration = 1100;
};
};
@ -189,6 +206,21 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
08568E6EE9BA48E55B7C3865 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@ -201,7 +233,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin";
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
@ -217,6 +249,28 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
986D76F6694E0D6D8C5CDAAB /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@ -309,6 +363,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = 3A359E86ZF;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@ -320,8 +375,8 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
PRODUCT_BUNDLE_IDENTIFIER = com.example.doctorAppFlutter;
PRODUCT_NAME = "$(TARGET_NAME)";
PRODUCT_BUNDLE_IDENTIFIER = com.hmg.doctorApp;
PRODUCT_NAME = Runner;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
@ -443,6 +498,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = 3A359E86ZF;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@ -454,8 +510,8 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
PRODUCT_BUNDLE_IDENTIFIER = com.example.doctorAppFlutter;
PRODUCT_NAME = "$(TARGET_NAME)";
PRODUCT_BUNDLE_IDENTIFIER = com.hmg.doctorApp;
PRODUCT_NAME = Runner;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
@ -470,6 +526,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = 3A359E86ZF;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@ -481,8 +538,8 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
PRODUCT_BUNDLE_IDENTIFIER = com.example.doctorAppFlutter;
PRODUCT_NAME = "$(TARGET_NAME)";
PRODUCT_BUNDLE_IDENTIFIER = com.hmg.doctorApp;
PRODUCT_NAME = Runner;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

@ -27,8 +27,6 @@
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
@ -38,8 +36,8 @@
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
@ -61,8 +59,6 @@
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Profile"

@ -4,4 +4,7 @@
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

@ -11,7 +11,7 @@
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>doctor_app_flutter</string>
<string>Doctor App</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
@ -22,12 +22,14 @@
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSCameraUsageDescription</key>
<string>Camera permission is required for barcode scanning.</string>
<key>NSFaceIDUsageDescription</key>
<string>Why is my app authenticating using face id?</string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>NSFaceIDUsageDescription</key>
<string>Why is my app authenticating using face id?</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
@ -43,7 +45,5 @@
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>NSCameraUsageDescription</key>
<string>Camera permission is required for barcode scanning.</string>
</dict>
</plist>

@ -0,0 +1,18 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/interceptor/http_interceptor.dart';
import 'package:http/http.dart';
// OWNER : Ibrahim albitar
// DATE : 22-04-2020
// DESCRIPTION : Custom App client to pin base url for all srvices
class AppClient {
static Client client = HttpInterceptor().getClient();
static Future<Response> post(dynamic path, {dynamic body}) async {
String _fullUrl = BASE_URL + path;
final response = await client.post(_fullUrl, body: body);
return response;
}
}

@ -3,11 +3,8 @@ import 'dart:convert';
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/models/doctor_profile_model.dart';
import 'package:doctor_app_flutter/routes.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
@ -44,7 +41,7 @@ class BaseAppClient {
body['DoctorID'] = doctorProfile?.doctorID;
body['EditedBy'] = doctorProfile?.doctorID;
body['ProjectID'] = doctorProfile?.projectID;
if (!body.containsKey('ClinicID'))
// if (!body.containsKey('ClinicID'))
body['ClinicID'] = doctorProfile?.clinicID;
}
body['TokenID'] = token ?? '';
@ -56,8 +53,10 @@ class BaseAppClient {
body['SessionID'] = SESSION_ID;
body['IsLoginForDoctorApp'] = IS_LOGIN_FOR_DOCTOR_APP;
body['PatientOutSA'] = PATIENT_OUT_SA;
print("URL : $url");
print("Body : ${json.encode(body)}");
if (await Helpers.checkConnection()) {
if (await Helpers.checkConnection()) {
final response = await http.post(url,
body: json.encode(body),
headers: {
@ -70,7 +69,8 @@ class BaseAppClient {
} else {
var parsed = json.decode(response.body.toString());
if (!parsed['IsAuthenticated']) {
Navigator.of(AppGlobal.CONTEX).pushNamed(LOGIN);
await helpers.logout();
helpers.showErrorToast('Your session expired Please login agian');
} else if (parsed['MessageStatus'] == 1) {
onSuccess(parsed, statusCode);

@ -1,14 +1,17 @@
const MAX_SMALL_SCREEN = 660;
const ONLY_NUMBERS = "[0-9]";
const ONLY_LETTERS = "[a-zA-Z]";
const ONLY_LETTERS = "[a-zA-Z &'\"]";
const ONLY_DATE = "[0-9/]";
const BASE_URL = 'https://hmgwebservices.com/Services/';
const BASE_URL = 'https://hmgwebservices.com/Services/';
//const BASE_URL = 'https://uat.hmgwebservices.com/Services/';
const PHARMACY_ITEMS_URL = "Lists.svc/REST/GetPharmcyItems_Region";
const PHARMACY_LIST_URL = "Patients.svc/REST/GetPharmcyList";
const PATIENT_PROGRESS_NOTE_URL = "DoctorApplication.svc/REST/GetProgressNoteForInPatient";
const PATIENT_INSURANCE_APPROVALS_URL = "DoctorApplication.svc/REST/GetApprovalStatusForInpatient";
const PATIENT_ORDERS_URL = "DoctorApplication.svc/REST/GetProgressNoteForInPatient";
const PATIENT_PROGRESS_NOTE_URL =
"DoctorApplication.svc/REST/GetProgressNoteForInPatient";
const PATIENT_INSURANCE_APPROVALS_URL =
"DoctorApplication.svc/REST/GetApprovalStatusForInpatient";
const PATIENT_ORDERS_URL =
"DoctorApplication.svc/REST/GetProgressNoteForInPatient";
const PATIENT_REFER_TO_DOCTOR_URL = "DoctorApplication.svc/REST/ReferToDoctor";
const PATIENT_GET_DOCTOR_BY_CLINIC_URL = "DoctorApplication.svc/REST/GetDoctorsByClinicID";
const PATIENT_GET_LIST_REFERAL_URL = "Lists.svc/REST/GetList_STPReferralFrequency";
@ -21,7 +24,7 @@ const GET_PATIENT_LAB_OREDERS =
const GET_PRESCRIPTION = 'Patients.svc/REST/GetPrescriptionApptList';
const GET_RADIOLOGY = 'DoctorApplication.svc/REST/GetPatientRadResult';
var selectedPatientType = 0;
var selectedPatientType = 0;
//*********change value to decode json from Dropdown ************
var SERVICES_PATIANT = [
@ -63,12 +66,11 @@ const IP_ADDRESS = '11.11.11.11';
const VERSION_ID = 1.2;
const CHANNEL = 9;
const SESSION_ID = 'BlUSkYymTt';
const IS_LOGIN_FOR_DOCTOR_APP = true;
const IS_LOGIN_FOR_DOCTOR_APP = true;
const PATIENT_OUT_SA = false;
/// Timer Info
const TIMER_MIN =10;
const TIMER_MIN = 10;
class AppGlobal{
static var CONTEX;
}

@ -50,4 +50,5 @@ const Map<String, Map<String, String>> localizedValues = {
'phoneNumber': {'en': 'Phone Number ', 'ar': 'رقم الجوال'},
'patientID': {'en': 'Patient ID', 'ar': 'رقم المريض'},
'patientFile ': {'en': 'Patient File', 'ar': 'ملف المريض'},
'familyMedicine': {'en': 'Family Medicine Clinic', 'ar': 'عيادة طب الأسرة'}
};

@ -0,0 +1,65 @@
import 'dart:convert';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/providers/auth_provider.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:http/http.dart';
import 'package:http_interceptor/http_interceptor.dart';
import '../providers/auth_provider.dart';
import '../util/dr_app_shared_pref.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
List<String> publicUrls = [
LOGIN_URL,
SELECT_DEVICE_IMEI,
MEMBER_CHECK_ACTIVATION_CODE_NEW,
SEND_ACTIVATION_CODE_BY_OTP_NOTIFICATION_TYPE
];
class HttpInterceptor extends InterceptorContract {
Client getClient(){
return HttpClientWithInterceptor.build(interceptors: [this]);
}
Future<RequestData> interceptRequest({RequestData data}) async {
print('RequestData ${data.body}');
print('RequestData ${data.url}');
try {
data.headers["Content-Type"] = "application/json";
data.headers["Accept"] = "application/json";
// if (publicUrls.contains(data.url)) {
// var loggedUserInfo = await sharedPref.getObj('loggedUser');
// var token = await sharedPref.getString(TOKEN);
// // print("token"+token);
// // print('loggedUserInfo${loggedUserInfo["LogInTokenID"]}');
// // // the sevices handel the token in differat name so I ask to be change
// // // we must change the imple
// var body = json.decode(data.body);
// body['LogInTokenID']=token;
// data.body = json.encode(body);
// // data.body['LogInTokenID'] = '';
// } else {
// if (data.body['LogInTokenID']) {
// data.body['LogInTokenID'] = '';
// }
// if (data.body['TokenID']) {
// data.body['TokenID'] = '';
// }
// }
} catch (e) {
print(e);
}
// print('data.body${data.body}');
return data;
}
@override
Future<ResponseData> interceptResponse({ResponseData data}) async {
// print('ResponseData ${data.body}');
return data;
}
}

@ -51,14 +51,7 @@ class _LandingPageState extends State<LandingPage> {
},
),
centerTitle: true,
actions: <Widget>[
ProfileImageWidget(
height: 50,
width: 50,
url:
"https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png",
)
],
),
drawer: Theme(
data: Theme.of(context).copyWith(

@ -1,218 +1,222 @@
List <Map> ListProject= [
{
"Desciption": "Dubai Hospital",
"DesciptionN": null,
"ID": 2,
"LegalName": "Dr. Sulaiman Al Habib Hospital FZ - LLC ",
"LegalNameN": "مستشفى الدكتور سليمان الحبيب منطقة حرة - ذ.م.م",
"Name": "Dubai Hospital",
"NameN": null,
"PhoneNumber": "+97144297777",
"SetupID": "505005",
"DistanceInKilometers": 0,
"IsActive": true,
"Latitude": "25.231273",
"Longitude": "55.320942",
"MainProjectID": 2,
"ProjectOutSA": true,
"UsingInDoctorApp": true
},
{
"Desciption": "SZR Center",
"DesciptionN": null,
"ID": 3,
"LegalName": "Dr. Sulaiman Al Habib Hospital SZR - LLC ",
"LegalNameN": "مستشفى الدكتور سليمان الحبيب طريق الشيخ زايد",
"Name": "SZR Medical Center",
"NameN": null,
"PhoneNumber": "+97144297777",
"SetupID": "505005",
"DistanceInKilometers": 0,
"IsActive": true,
"Latitude": "25.154501",
"Longitude": "55.226000",
"MainProjectID": 3,
"ProjectOutSA": true,
"UsingInDoctorApp": true
},
{
"Desciption": "Home Health Care (HHC)",
"DesciptionN": null,
"ID": 95,
"LegalName": "",
"LegalNameN": "",
"Name": "Home Health Care (HHC)",
"NameN": null,
"PhoneNumber": "+966114622224",
"SetupID": "91877 ",
"DistanceInKilometers": 0,
"IsActive": false,
"Latitude": "24.704242",
"Longitude": "46.675823",
"MainProjectID": 12,
"ProjectOutSA": false,
"UsingInDoctorApp": true
},
{
"Desciption": "Olaya Hospital",
"DesciptionN": null,
"ID": 12,
"LegalName": "from Sehat Al Olaya Medical Complex Company",
"LegalNameN": "شركة مجمع صحة العليا الطبي ",
"Name": "Olaya Hospital",
"NameN": null,
"PhoneNumber": "+966114622224",
"SetupID": "91877 ",
"DistanceInKilometers": 0,
"IsActive": true,
"Latitude": "24.704242",
"Longitude": "46.675823",
"MainProjectID": 12,
"ProjectOutSA": false,
"UsingInDoctorApp": true
},
{
"Desciption": "Ajaji Dental Clinic (AMS)",
"DesciptionN": null,
"ID": 99,
"LegalName": "from Dr. Abdulaziz A. Al - Ajaji Dental Clinics Complex Company",
"LegalNameN": "شركة مجمع عيادات الدكتور عبدالعزيز ابرهيم العجاجي لطب الاسنان",
"Name": "Ajaji Dental Clinic (AMS)",
"NameN": null,
"PhoneNumber": "+966115259999",
"SetupID": "010266",
"DistanceInKilometers": 0,
"IsActive": false,
"Latitude": "24.722136",
"Longitude": "46.774303",
"MainProjectID": 15,
"ProjectOutSA": false,
"UsingInDoctorApp": true
},
{
"Desciption": "Ajaji Dental Clinic (AMS)",
"DesciptionN": null,
"ID": 100,
"LegalName": "from Dr. Abdulaziz A. Al - Ajaji Dental Clinics Complex Company",
"LegalNameN": "شركة مجمع عيادات الدكتور عبدالعزيز ابرهيم العجاجي لطب الاسنان",
"Name": "Ajaji Dental Clinic (AMS) Malaz",
"NameN": null,
"PhoneNumber": "+966115259999",
"SetupID": "010266",
"DistanceInKilometers": 0,
"IsActive": false,
"Latitude": "24.722136",
"Longitude": "46.774303",
"MainProjectID": 15,
"ProjectOutSA": false,
"UsingInDoctorApp": true
},
{
"Desciption": "Arryan Hospital",
"DesciptionN": null,
"ID": 15,
"LegalName": "Al Rayan Hospital for Healthcare Company ",
"LegalNameN": "شركة مستشفى الريان للرعاية الطبية",
"Name": "Arryan Hospital",
"NameN": null,
"PhoneNumber": "+966114909999",
"SetupID": "010266",
"DistanceInKilometers": 0,
"IsActive": true,
"Latitude": "24.722136",
"Longitude": "46.774303",
"MainProjectID": 15,
"ProjectOutSA": false,
"UsingInDoctorApp": true
},
{
"Desciption": "MD Lab",
"DesciptionN": null,
"ID": 150,
"LegalName": "",
"LegalNameN": "",
"Name": "MD Lab",
"NameN": null,
"PhoneNumber": "+966114774700",
"SetupID": "010266",
"DistanceInKilometers": 0,
"IsActive": false,
"Latitude": "24.722136",
"Longitude": "46.774303",
"MainProjectID": 15,
"ProjectOutSA": false,
"UsingInDoctorApp": true
},
{
"Desciption": "Takhassusi Hospital",
"DesciptionN": null,
"ID": 16,
"LegalName": "Western Specialist Hospital for Medical Care",
"LegalNameN": "شركة مستشفى الغرب التخصصي للرعاية الطبية ",
"Name": "Takhassusi Hospital",
"NameN": null,
"PhoneNumber": "+966112833333",
"SetupID": "102000",
"DistanceInKilometers": 0,
"IsActive": true,
"Latitude": "24.719364",
"Longitude": "46.657567",
"MainProjectID": 16,
"ProjectOutSA": false,
"UsingInDoctorApp": true
},
{
"Desciption": "Suwaidi Hospital",
"DesciptionN": null,
"ID": 17,
"LegalName": "Sehat Al Suwaidi Medical Company",
"LegalNameN": "شركة صحة السويدي الطبية",
"Name": "Suwaidi Hospital",
"NameN": null,
"PhoneNumber": "+966114754444",
"SetupID": "010266",
"DistanceInKilometers": 0,
"IsActive": true,
"Latitude": "24.567525",
"Longitude": " 46.641019",
"MainProjectID": 17,
"ProjectOutSA": false,
"UsingInDoctorApp": true
},
{
"Desciption": "Al Qassim Hospital\r\n",
"DesciptionN": null,
"ID": 21,
"LegalName": "Buraidah Al Takhassusi Hospital for Healthcare Company",
"LegalNameN": "شركة مستشفى بريدة التخصصي للرعاية الطبية ",
"Name": "Al Qassim Hospital",
"NameN": null,
"PhoneNumber": "+966163166666",
"SetupID": "051431",
"DistanceInKilometers": 0,
"IsActive": true,
"Latitude": "26.360724",
"Longitude": "43.945774",
"MainProjectID": 21,
"ProjectOutSA": false,
"UsingInDoctorApp": true
},
{
"Desciption": "Khobar Hospital",
"DesciptionN": null,
"ID": 60,
"LegalName": "Khobar Hospital",
"LegalNameN": "مستشفى الخبر",
"Name": "Khobar Hospital",
"NameN": null,
"PhoneNumber": "+966138711111",
"SetupID": "034423",
"DistanceInKilometers": 0,
"IsActive": true,
"Latitude": "26.3107804",
"Longitude": "50.2108347",
"MainProjectID": 60,
"ProjectOutSA": false,
"UsingInDoctorApp": true
}
];
List<Map> ListProject = [
{
"Desciption": "Dubai Hospital",
"DesciptionN": null,
"ID": 2,
"LegalName": "Dr. Sulaiman Al Habib Hospital FZ - LLC ",
"LegalNameN": "مستشفى الدكتور سليمان الحبيب منطقة حرة - ذ.م.م",
"Name": "Dubai Hospital",
"NameN": null,
"PhoneNumber": "+97144297777",
"SetupID": "505005",
"DistanceInKilometers": 0,
"IsActive": true,
"Latitude": "25.231273",
"Longitude": "55.320942",
"MainProjectID": 2,
"ProjectOutSA": true,
"UsingInDoctorApp": true
},
{
"Desciption": "SZR Center",
"DesciptionN": null,
"ID": 3,
"LegalName": "Dr. Sulaiman Al Habib Hospital SZR - LLC ",
"LegalNameN": "مستشفى الدكتور سليمان الحبيب طريق الشيخ زايد",
"Name": "SZR Medical Center",
"NameN": null,
"PhoneNumber": "+97144297777",
"SetupID": "505005",
"DistanceInKilometers": 0,
"IsActive": true,
"Latitude": "25.154501",
"Longitude": "55.226000",
"MainProjectID": 3,
"ProjectOutSA": true,
"UsingInDoctorApp": true
},
{
"Desciption": "Home Health Care (HHC)",
"DesciptionN": null,
"ID": 95,
"LegalName": "",
"LegalNameN": "",
"Name": "Home Health Care (HHC)",
"NameN": null,
"PhoneNumber": "+966114622224",
"SetupID": "91877 ",
"DistanceInKilometers": 0,
"IsActive": false,
"Latitude": "24.704242",
"Longitude": "46.675823",
"MainProjectID": 12,
"ProjectOutSA": false,
"UsingInDoctorApp": true
},
{
"Desciption": "Olaya Hospital",
"DesciptionN": null,
"ID": 12,
"LegalName": "from Sehat Al Olaya Medical Complex Company",
"LegalNameN": "شركة مجمع صحة العليا الطبي ",
"Name": "Olaya Hospital",
"NameN": null,
"PhoneNumber": "+966114622224",
"SetupID": "91877 ",
"DistanceInKilometers": 0,
"IsActive": true,
"Latitude": "24.704242",
"Longitude": "46.675823",
"MainProjectID": 12,
"ProjectOutSA": false,
"UsingInDoctorApp": true
},
{
"Desciption": "Ajaji Dental Clinic (AMS)",
"DesciptionN": null,
"ID": 99,
"LegalName":
"from Dr. Abdulaziz A. Al - Ajaji Dental Clinics Complex Company",
"LegalNameN":
"شركة مجمع عيادات الدكتور عبدالعزيز ابرهيم العجاجي لطب الاسنان",
"Name": "Ajaji Dental Clinic (AMS)",
"NameN": null,
"PhoneNumber": "+966115259999",
"SetupID": "010266",
"DistanceInKilometers": 0,
"IsActive": false,
"Latitude": "24.722136",
"Longitude": "46.774303",
"MainProjectID": 15,
"ProjectOutSA": false,
"UsingInDoctorApp": true
},
{
"Desciption": "Ajaji Dental Clinic (AMS)",
"DesciptionN": null,
"ID": 100,
"LegalName":
"from Dr. Abdulaziz A. Al - Ajaji Dental Clinics Complex Company",
"LegalNameN":
"شركة مجمع عيادات الدكتور عبدالعزيز ابرهيم العجاجي لطب الاسنان",
"Name": "Ajaji Dental Clinic (AMS) Malaz",
"NameN": null,
"PhoneNumber": "+966115259999",
"SetupID": "010266",
"DistanceInKilometers": 0,
"IsActive": false,
"Latitude": "24.722136",
"Longitude": "46.774303",
"MainProjectID": 15,
"ProjectOutSA": false,
"UsingInDoctorApp": true
},
{
"Desciption": "Arryan Hospital",
"DesciptionN": null,
"ID": 15,
"LegalName": "Al Rayan Hospital for Healthcare Company ",
"LegalNameN": "شركة مستشفى الريان للرعاية الطبية",
"Name": "Arryan Hospital",
"NameN": null,
"PhoneNumber": "+966114909999",
"SetupID": "010266",
"DistanceInKilometers": 0,
"IsActive": true,
"Latitude": "24.722136",
"Longitude": "46.774303",
"MainProjectID": 15,
"ProjectOutSA": false,
"UsingInDoctorApp": true
},
{
"Desciption": "MD Lab",
"DesciptionN": null,
"ID": 150,
"LegalName": "",
"LegalNameN": "",
"Name": "MD Lab",
"NameN": null,
"PhoneNumber": "+966114774700",
"SetupID": "010266",
"DistanceInKilometers": 0,
"IsActive": false,
"Latitude": "24.722136",
"Longitude": "46.774303",
"MainProjectID": 15,
"ProjectOutSA": false,
"UsingInDoctorApp": true
},
{
"Desciption": "Takhassusi Hospital",
"DesciptionN": null,
"ID": 16,
"LegalName": "Western Specialist Hospital for Medical Care",
"LegalNameN": "شركة مستشفى الغرب التخصصي للرعاية الطبية ",
"Name": "Takhassusi Hospital",
"NameN": null,
"PhoneNumber": "+966112833333",
"SetupID": "102000",
"DistanceInKilometers": 0,
"IsActive": true,
"Latitude": "24.719364",
"Longitude": "46.657567",
"MainProjectID": 16,
"ProjectOutSA": false,
"UsingInDoctorApp": true
},
{
"Desciption": "Suwaidi Hospital",
"DesciptionN": null,
"ID": 17,
"LegalName": "Sehat Al Suwaidi Medical Company",
"LegalNameN": "شركة صحة السويدي الطبية",
"Name": "Suwaidi Hospital",
"NameN": null,
"PhoneNumber": "+966114754444",
"SetupID": "010266",
"DistanceInKilometers": 0,
"IsActive": true,
"Latitude": "24.567525",
"Longitude": " 46.641019",
"MainProjectID": 17,
"ProjectOutSA": false,
"UsingInDoctorApp": true
},
{
"Desciption": "Al Qassim Hospital\r\n",
"DesciptionN": null,
"ID": 21,
"LegalName": "Buraidah Al Takhassusi Hospital for Healthcare Company",
"LegalNameN": "شركة مستشفى بريدة التخصصي للرعاية الطبية ",
"Name": "Al Qassim Hospital",
"NameN": null,
"PhoneNumber": "+966163166666",
"SetupID": "051431",
"DistanceInKilometers": 0,
"IsActive": true,
"Latitude": "26.360724",
"Longitude": "43.945774",
"MainProjectID": 21,
"ProjectOutSA": false,
"UsingInDoctorApp": true
},
{
"Desciption": "Khobar Hospital",
"DesciptionN": null,
"ID": 60,
"LegalName": "Khobar Hospital",
"LegalNameN": "مستشفى الخبر",
"Name": "Khobar Hospital",
"NameN": null,
"PhoneNumber": "+966138711111",
"SetupID": "034423",
"DistanceInKilometers": 0,
"IsActive": true,
"Latitude": "26.3107804",
"Longitude": "50.2108347",
"MainProjectID": 60,
"ProjectOutSA": false,
"UsingInDoctorApp": true
}
];

@ -1,26 +1,17 @@
const PATIENT_TYPE = const [
{"text": "outPatiant", "val": "0"},
{"text": "InPatiant", "val": "1"},
{"text": "Discharge", "val": "2"},
{"text": "Referrd", "val": "3"},
{"text": "Referral Discharge", "val": "4"},
{"text": "Tomorrow Patient", "val": "5"},
{"text": "Referral", "val": "6"},
];
const PATIENT_TYPE = const [
{"text": "outPatiant", "val": "0"},
{"text": "InPatiant", "val": "1"},
{"text": "Discharge", "val": "2"},
{"text": "Referrd", "val": "3"},
{"text": "Referral Discharge", "val": "4"},
{"text": "Tomorrow Patient", "val": "5"},
{"text": "Referral", "val": "6"},
];
const LOCATIONS = const[
{"text": "In Sudia Arabia", "val": "1"},
{"text": "Out Sudia Arabia", "val": "2"},
];
const LOCATIONS = const [
{"text": "In Sudia Arabia", "val": "1"},
{"text": "Out Sudia Arabia", "val": "2"},
];
enum vitalSignDetails {
bodyMeasurements,
@ -30,4 +21,4 @@ enum vitalSignDetails {
bloodPressure,
oxygenation,
painScale
}
}

@ -1,3 +1,5 @@
import 'package:flutter/cupertino.dart';
class ReferToDoctorRequest {
/*
@ -64,27 +66,27 @@ class ReferToDoctorRequest {
*/
ReferToDoctorRequest(
{this.projectID,
this.admissionNo,
this.roomID = "ISO-6",
this.referralClinic,
this.referralDoctor ,
this.createdBy,
this.editedBy ,
this.patientID,
this.patientTypeID = 1,
this.referringClinic,
this.referringDoctor,
this.referringDoctorRemarks,
this.priority ,
this.frequency,
this.extension,
{@required this.projectID,
@required this.admissionNo,
@required this.roomID ,
@required this.referralClinic,
@required this.referralDoctor ,
@required this.createdBy,
@required this.editedBy ,
@required this.patientID,
@required this.patientTypeID,
@required this.referringClinic,
@required this.referringDoctor,
@required this.referringDoctorRemarks,
@required this.priority ,
@required this.frequency,
@required this.extension,
this.languageID = 2,
this.stamp = "2020-06-03T11:26:42.358Z",
this.iPAdress = "11.11.11.11",
this.versionID = 1.2,
this.channel = 9,
this.tokenID,
@required this.tokenID,
this.sessionID = "JBXRsDl37L",
this.isLoginForDoctorApp = true,
this.patientOutSA = false});

@ -31,4 +31,7 @@ class DoctorApp {
static const IconData message_icon_active = IconData(0xe807, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData scdedule_icon_active = IconData(0xe808, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData schedule_icon = IconData(0xe809, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData reject_icon = IconData(0xe80a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData approved_icon = IconData(0xe80b, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData pending_icon = IconData(0xe80c, fontFamily: _kFontFam, fontPackage: _kFontPkg);
}

@ -22,19 +22,19 @@ class AuthProvider with ChangeNotifier {
await BaseAppClient.post(LOGIN_URL,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: {
"UserID": userInfo.UserID,
"Password": userInfo.Password,
"ProjectID": userInfo.ProjectID,
"LanguageID": userInfo.LanguageID,
"IPAdress": userInfo.IPAdress,
"VersionID": userInfo.VersionID,
"Channel": userInfo.Channel,
"SessionID": userInfo.SessionID
});
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: {
"UserID": userInfo.UserID,
"Password": userInfo.Password,
"ProjectID": userInfo.ProjectID,
"LanguageID": userInfo.LanguageID,
"IPAdress": userInfo.IPAdress,
"VersionID": userInfo.VersionID,
"Channel": userInfo.Channel,
"SessionID": userInfo.SessionID
});
return Future.value(localRes);
} catch (error) {
@ -49,10 +49,10 @@ class AuthProvider with ChangeNotifier {
await BaseAppClient.post(INSERT_DEVICE_IMEI,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: imei);
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: imei);
return Future.value(localRes);
} catch (error) {
print(error);
@ -65,10 +65,10 @@ class AuthProvider with ChangeNotifier {
dynamic localRes;
await BaseAppClient.post(SELECT_DEVICE_IMEI,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: imei);
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: imei);
return Future.value(localRes);
} catch (error) {
print(error);
@ -82,10 +82,10 @@ class AuthProvider with ChangeNotifier {
var localRes;
await BaseAppClient.post(SEND_ACTIVATION_CODE_BY_OTP_NOTIFICATION_TYPE,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: activationCodeModel);
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: activationCodeModel);
return Future.value(localRes);
} catch (error) {
print(error);
@ -98,10 +98,10 @@ class AuthProvider with ChangeNotifier {
dynamic localRes;
await BaseAppClient.post(MEMBER_CHECK_ACTIVATION_CODE_NEW,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: activationCodeModel);
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: activationCodeModel);
return Future.value(localRes);
} catch (error) {
print(error);
@ -109,8 +109,8 @@ class AuthProvider with ChangeNotifier {
}
}
/*
*@author: Elham Rababah
/*
*@author: Elham Rababah
*@Date:17/5/2020
*@param: docInfo
*@return:Future<Map>
@ -121,10 +121,10 @@ class AuthProvider with ChangeNotifier {
dynamic localRes;
await BaseAppClient.post(GET_DOC_PROFILES,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: docInfo);
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: docInfo);
return Future.value(localRes);
} catch (error) {
print(error);

@ -25,7 +25,7 @@ class HospitalProvider with ChangeNotifier {
throw error;
},
body: info);
return Future.value(localRes);
return Future.value(localRes);
}
}

@ -1,39 +1,57 @@
import 'package:doctor_app_flutter/client/base_app_client.dart';
import 'dart:convert';
import 'package:doctor_app_flutter/client/app_client.dart';
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/models/pharmacies_List_request_model.dart';
import 'package:doctor_app_flutter/models/pharmacies_items_request_model.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:flutter/cupertino.dart';
import '.../../../util/dr_app_shared_pref.dart';
class MedicineProvider with ChangeNotifier {
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
var pharmacyItemsList = [];
var pharmaciesList = [];
bool isFinished = true;
bool hasError = false;
String errorMsg = '';
PharmaciesItemsRequestModel _itemsRequestModel =
PharmaciesItemsRequestModel();
PharmaciesItemsRequestModel _itemsRequestModel =PharmaciesItemsRequestModel();
PharmaciesListRequestModel _listRequestModel = PharmaciesListRequestModel();
Future<String> getMedicineItem(String itemName) async {
resetDefaultValues();
try {
_itemsRequestModel.pHRItemName = itemName;
await BaseAppClient.post(PHARMACY_ITEMS_URL,
onSuccess: (dynamic response, int statusCode) {
pharmacyItemsList = response['ListPharmcy_Region'];
hasError = false;
if (await Helpers.checkConnection()) {
_itemsRequestModel.pHRItemName = itemName;
final response = await AppClient.post(PHARMACY_ITEMS_URL,
body: json.encode(_itemsRequestModel.toJson()));
final int statusCode = response.statusCode;
isFinished = true;
errorMsg = "Done";
}, onFailure: (String error, int statusCode) {
if (statusCode < 200 || statusCode >= 400 || json == null) {
isFinished = true;
hasError = true;
errorMsg = 'Error While Fetching data';
} else {
var parsed = json.decode(response.body.toString());
if (parsed['MessageStatus'] == 1) {
pharmacyItemsList = parsed['ListPharmcy_Region'];
hasError = false;
isFinished = true;
errorMsg = "Done";
} else {
hasError = true;
errorMsg = parsed['ErrorMessage'] ?? parsed['ErrorEndUserMessage'];
}
}
} else {
isFinished = true;
hasError = true;
errorMsg = error;
}, body: _itemsRequestModel.toJson());
errorMsg = 'Please Check The Internet Connection';
}
notifyListeners();
} catch (error) {
throw error;
@ -43,20 +61,37 @@ class MedicineProvider with ChangeNotifier {
}
Future<String> getPharmaciesList(int itemId) async {
String token = await sharedPref.getString(TOKEN);
resetDefaultValues();
try {
_listRequestModel.itemID = itemId;
await BaseAppClient.post(PHARMACY_LIST_URL,
onSuccess: (dynamic response, int statusCode) {
pharmaciesList = response['PharmList'];
hasError = false;
if (await Helpers.checkConnection()) {
_listRequestModel.itemID = itemId;
_listRequestModel.tokenID = token;
final response = await AppClient.post(PHARMACY_LIST_URL,
body: json.encode(_listRequestModel.toJson()));
final int statusCode = response.statusCode;
isFinished = true;
errorMsg = "Done";
}, onFailure: (String error, int statusCode) {
if (statusCode < 200 || statusCode >= 400 || json == null) {
isFinished = true;
hasError = true;
errorMsg = 'Error While Fetching data';
} else {
var parsed = json.decode(response.body.toString());
if (parsed['MessageStatus'] == 1) {
pharmaciesList = parsed['PharmList'];
hasError = false;
isFinished = true;
errorMsg = "Done";
} else {
hasError = true;
errorMsg = parsed['ErrorMessage'] ?? parsed['ErrorEndUserMessage'];
}
}
} else {
isFinished = true;
hasError = true;
errorMsg = error;
}, body: _listRequestModel.toJson());
errorMsg = 'Please Check The Internet Connection';
}
notifyListeners();
} catch (error) {
throw error;

@ -1,3 +1,6 @@
import 'dart:convert';
import 'package:doctor_app_flutter/client/app_client.dart';
import 'package:doctor_app_flutter/client/base_app_client.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/models/doctor_profile_model.dart';
@ -13,6 +16,7 @@ import 'package:doctor_app_flutter/models/patient/prescription_res_model.dart';
import 'package:doctor_app_flutter/models/patient/radiology_res_model.dart';
import 'package:doctor_app_flutter/models/patient/refer_to_doctor_request.dart';
import 'package:doctor_app_flutter/models/prescription_report.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:flutter/cupertino.dart';
import '../config/config.dart';
@ -25,6 +29,7 @@ import '../models/patient/vital_sign_res_model.dart';
import '../util/helpers.dart';
Helpers helpers = Helpers();
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
class PatientsProvider with ChangeNotifier {
bool isLoading = false;
@ -53,52 +58,52 @@ class PatientsProvider with ChangeNotifier {
var referalFrequancyList = [];
DoctorsByClinicIdRequest _doctorsByClinicIdRequest =
DoctorsByClinicIdRequest();
DoctorsByClinicIdRequest();
STPReferralFrequencyRequest _referralFrequencyRequest =
STPReferralFrequencyRequest();
STPReferralFrequencyRequest();
ClinicByProjectIdRequest _clinicByProjectIdRequest =
ClinicByProjectIdRequest();
ClinicByProjectIdRequest();
ReferToDoctorRequest _referToDoctorRequest = ReferToDoctorRequest();
PatiantInformtion _selectedPatient;
getPatientList(PatientModel patient, patientType) async {
Future<dynamic> getPatientList(PatientModel patient, patientType) async {
int val = int.parse(patientType);
try {
var localResponse;
await BaseAppClient.post(
'DoctorApplication.svc/REST/' + SERVICES_PATIANT[val],
onSuccess: (dynamic response, int statusCode) async {
localResponse = response;
}, onFailure: (String error, int statusCode) async {
throw error;
}, body: {
"ProjectID": patient.ProjectID,
"ClinicID": patient.ClinicID,
"DoctorID": patient.DoctorID,
"FirstName": patient.FirstName,
"MiddleName": patient.MiddleName,
"LastName": patient.LastName,
"PatientMobileNumber": patient.PatientMobileNumber,
"PatientIdentificationID": patient.PatientIdentificationID,
"PatientID": patient.PatientID,
"From": patient.From,
"To": patient.To,
"LanguageID": patient.LanguageID,
"stamp": patient.stamp,
"IPAdress": patient.IPAdress,
"VersionID": patient.VersionID,
"Channel": patient.Channel,
"TokenID": patient.TokenID,
"SessionID": patient.SessionID,
"IsLoginForDoctorApp": patient.IsLoginForDoctorApp,
"PatientOutSA": patient.PatientOutSA
});
return localResponse;
} catch (err) {
handelCatchErrorCase(error);
dynamic localRes;
await BaseAppClient.post('DoctorApplication.svc/REST/' + SERVICES_PATIANT[val],
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: {
"ProjectID": patient.ProjectID,
"ClinicID": patient.ClinicID,
"DoctorID": patient.DoctorID,
"FirstName": patient.FirstName,
"MiddleName": patient.MiddleName,
"LastName": patient.LastName,
"PatientMobileNumber": patient.PatientMobileNumber,
"PatientIdentificationID": patient.PatientIdentificationID,
"PatientID": patient.PatientID,
"From": patient.From,
"To": patient.To,
"LanguageID": patient.LanguageID,
"stamp": patient.stamp,
"IPAdress": patient.IPAdress,
"VersionID": patient.VersionID,
"Channel": patient.Channel,
"TokenID": patient.TokenID,
"SessionID": patient.SessionID,
"IsLoginForDoctorApp": patient.IsLoginForDoctorApp,
"PatientOutSA": patient.PatientOutSA
});
return Future.value(localRes);
} catch (error) {
print(error);
throw error;
}
}
@ -122,36 +127,36 @@ class PatientsProvider with ChangeNotifier {
try {
await BaseAppClient.post(GET_PATIENT_VITAL_SIGN,
onSuccess: (dynamic response, int statusCode) {
patientVitalSignList = [];
response['List_DoctorPatientVitalSign'].forEach((v) {
patientVitalSignList.add(new VitalSignResModel.fromJson(v));
});
if (patientVitalSignList.length > 0) {
List<VitalSignResModel> patientVitalSignOrderdSubListTemp = [];
patientVitalSignOrderdSubListTemp = patientVitalSignList;
patientVitalSignOrderdSubListTemp
.sort((VitalSignResModel a, VitalSignResModel b) {
return b.vitalSignDate.microsecondsSinceEpoch -
a.vitalSignDate.microsecondsSinceEpoch;
});
patientVitalSignOrderdSubList.clear();
int length = patientVitalSignOrderdSubListTemp.length >= 20
? 20
: patientVitalSignOrderdSubListTemp.length;
for (int x = 0; x < length; x++) {
patientVitalSignOrderdSubList
.add(patientVitalSignOrderdSubListTemp[x]);
}
}
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: patient);
patientVitalSignList = [];
response['List_DoctorPatientVitalSign'].forEach((v) {
patientVitalSignList.add(new VitalSignResModel.fromJson(v));
});
if (patientVitalSignList.length > 0) {
List<VitalSignResModel> patientVitalSignOrderdSubListTemp = [];
patientVitalSignOrderdSubListTemp = patientVitalSignList;
patientVitalSignOrderdSubListTemp
.sort((VitalSignResModel a, VitalSignResModel b) {
return b.vitalSignDate.microsecondsSinceEpoch -
a.vitalSignDate.microsecondsSinceEpoch;
});
patientVitalSignOrderdSubList.clear();
int length = patientVitalSignOrderdSubListTemp.length >= 20
? 20
: patientVitalSignOrderdSubListTemp.length;
for (int x = 0; x < length; x++) {
patientVitalSignOrderdSubList
.add(patientVitalSignOrderdSubListTemp[x]);
}
}
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: patient);
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
@ -172,18 +177,18 @@ class PatientsProvider with ChangeNotifier {
try {
await BaseAppClient.post(GET_PATIENT_LAB_OREDERS,
onSuccess: (dynamic response, int statusCode) {
patientLabResultOrdersList = [];
response['List_GetLabOreders'].forEach((v) {
patientLabResultOrdersList.add(new LabOrdersResModel.fromJson(v));
});
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: patient);
patientLabResultOrdersList = [];
response['List_GetLabOreders'].forEach((v) {
patientLabResultOrdersList.add(new LabOrdersResModel.fromJson(v));
});
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: patient);
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
@ -201,18 +206,18 @@ class PatientsProvider with ChangeNotifier {
try {
await BaseAppClient.post(GET_PRESCRIPTION,
onSuccess: (dynamic response, int statusCode) {
patientPrescriptionsList = [];
response['PatientPrescriptionList'].forEach((v) {
patientPrescriptionsList.add(new PrescriptionResModel.fromJson(v));
});
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: patient);
patientPrescriptionsList = [];
response['PatientPrescriptionList'].forEach((v) {
patientPrescriptionsList.add(new PrescriptionResModel.fromJson(v));
});
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: patient);
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
@ -233,13 +238,13 @@ class PatientsProvider with ChangeNotifier {
await BaseAppClient.post(
'DoctorApplication.svc/REST/GetPrescriptionReportForInPatient',
onSuccess: (dynamic response, int statusCode) {
response['List_PrescriptionReportForInPatient'].forEach((v) {
prescriptionReportForInPatientList
.add(PrescriptionReportForInPatient.fromJson(v));
});
isError = false;
isLoading = false;
}, onFailure: (String error, int statusCode) {
response['List_PrescriptionReportForInPatient'].forEach((v) {
prescriptionReportForInPatientList
.add(PrescriptionReportForInPatient.fromJson(v));
});
isError = false;
isLoading = false;
}, onFailure: (String error, int statusCode) {
isError = true;
isLoading = false;
this.error = error;
@ -258,16 +263,16 @@ class PatientsProvider with ChangeNotifier {
notifyListeners();
await BaseAppClient.post('Patients.svc/REST/GetPrescriptionReport',
onSuccess: (dynamic response, int statusCode) {
response['ListPRM'].forEach((v) {
prescriptionReport.add(PrescriptionReport.fromJson(v));
});
isError = false;
isLoading = false;
}, onFailure: (String error, int statusCode) {
isError = true;
isLoading = false;
this.error = error;
}, body: prescriptionReqModel);
response['ListPRM'].forEach((v) {
prescriptionReport.add(PrescriptionReport.fromJson(v));
});
isError = false;
isLoading = false;
}, onFailure: (String error, int statusCode) {
isError = true;
isLoading = false;
this.error = error;
}, body: prescriptionReqModel);
notifyListeners();
}
@ -298,18 +303,18 @@ class PatientsProvider with ChangeNotifier {
try {
await BaseAppClient.post(GET_RADIOLOGY,
onSuccess: (dynamic response, int statusCode) {
patientRadiologyList = [];
response['List_GetRadOreders'].forEach((v) {
patientRadiologyList.add(new RadiologyResModel.fromJson(v));
});
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: patient);
patientRadiologyList = [];
response['List_GetRadOreders'].forEach((v) {
patientRadiologyList.add(new RadiologyResModel.fromJson(v));
});
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: patient);
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
@ -327,16 +332,16 @@ class PatientsProvider with ChangeNotifier {
requestLabResult.patientTypeID = labOrdersResModel.patientType;
await BaseAppClient.post('DoctorApplication.svc/REST/GetPatientLabResults',
onSuccess: (dynamic response, int statusCode) {
isError = false;
isLoading = false;
response['List_GetLabNormal'].forEach((v) {
labResultList.add(new LabResult.fromJson(v));
});
}, onFailure: (String error, int statusCode) {
isError = true;
isLoading = false;
this.error = error;
}, body: requestLabResult.toJson());
isError = false;
isLoading = false;
response['List_GetLabNormal'].forEach((v) {
labResultList.add(new LabResult.fromJson(v));
});
}, onFailure: (String error, int statusCode) {
isError = true;
isLoading = false;
this.error = error;
}, body: requestLabResult.toJson());
notifyListeners();
}
@ -345,15 +350,15 @@ class PatientsProvider with ChangeNotifier {
try {
await BaseAppClient.post(PATIENT_INSURANCE_APPROVALS_URL,
onSuccess: (dynamic response, int statusCode) {
insuranceApporvalsList = response['List_ApprovalMain_InPatient'];
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: patient);
insuranceApporvalsList = response['List_ApprovalMain_InPatient'];
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: patient);
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
@ -369,15 +374,15 @@ class PatientsProvider with ChangeNotifier {
try {
await BaseAppClient.post(PATIENT_PROGRESS_NOTE_URL,
onSuccess: (dynamic response, int statusCode) {
patientProgressNoteList = response['List_GetPregressNoteForInPatient'];
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: patient);
patientProgressNoteList = response['List_GetPregressNoteForInPatient'];
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: patient);
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
@ -394,15 +399,15 @@ class PatientsProvider with ChangeNotifier {
_doctorsByClinicIdRequest.clinicID = clinicId;
await BaseAppClient.post(PATIENT_GET_DOCTOR_BY_CLINIC_URL,
onSuccess: (dynamic response, int statusCode) {
doctorsList = response['List_Doctors_All'];
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: _doctorsByClinicIdRequest.toJson());
doctorsList = response['List_Doctors_All'];
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: _doctorsByClinicIdRequest.toJson());
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
@ -411,7 +416,7 @@ class PatientsProvider with ChangeNotifier {
List getDoctorNameList() {
var doctorNamelist =
doctorsList.map((value) => value['DoctorName'].toString()).toList();
doctorsList.map((value) => value['DoctorName'].toString()).toList();
return doctorNamelist;
}
@ -424,15 +429,15 @@ class PatientsProvider with ChangeNotifier {
try {
await BaseAppClient.post(PATIENT_GET_CLINIC_BY_PROJECT_URL,
onSuccess: (dynamic response, int statusCode) {
clinicsList = response['List_Clinic_All'];
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: _clinicByProjectIdRequest.toJson());
clinicsList = response['List_Clinic_All'];
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: _clinicByProjectIdRequest.toJson());
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
@ -455,15 +460,15 @@ class PatientsProvider with ChangeNotifier {
try {
await BaseAppClient.post(PATIENT_GET_LIST_REFERAL_URL,
onSuccess: (dynamic response, int statusCode) {
referalFrequancyList = response['list_STPReferralFrequency'];
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: _referralFrequencyRequest.toJson());
referalFrequancyList = response['list_STPReferralFrequency'];
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: _referralFrequencyRequest.toJson());
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
@ -481,48 +486,69 @@ class PatientsProvider with ChangeNotifier {
*@Date:3/6/2020
*@desc: referToDoctor
*/
referToDoctor(
int selectedDoctorID,
int selectedClinicID,
String selectedReferralFrequancyID,
int admissionNo,
String extension,
String doctorRemark) async {
String token = await sharedPref.getString(TOKEN);
int projectID = await sharedPref.getInt(PROJECT_ID);
Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
DoctorProfileModel doctorProfile = new DoctorProfileModel.fromJson(profile);
int doctorID = doctorProfile.doctorID;
int clinicId = doctorProfile.clinicID;
referToDoctor(context,
{String selectedDoctorID,
String selectedClinicID,
int admissionNo,
String extension,
String priority,
String frequency,
String referringDoctorRemarks,
int patientID,
int patientTypeID,
String roomID,
int projectID}) async {
setBasicData();
try {
// _referToDoctorRequest.tokenID = token;
// _referToDoctorRequest.admissionNo = admissionNo;
// _referToDoctorRequest.projectID = projectID;
// _referToDoctorRequest.tokenID = token;
// _referToDoctorRequest.extension = extension;
// _referToDoctorRequest.frequency = selectedReferralFrequancyID;
// _referToDoctorRequest.patientID =
// _referToDoctorRequest.priority =
// _referToDoctorRequest.referralClinic =
// _referToDoctorRequest.referralDoctor =
// _referToDoctorRequest.referringDoctorRemarks =
// _referToDoctorRequest.roomID =
// _referToDoctorRequest.referringClinic =
// _referToDoctorRequest.referringDoctor =
await BaseAppClient.post(PATIENT_REFER_TO_DOCTOR_URL,
onSuccess: (dynamic response, int statusCode) {
patientProgressNoteList = response['List_GetPregressNoteForInPatient'];
if (await Helpers.checkConnection()) {
String token = await sharedPref.getString(TOKEN);
Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
DoctorProfileModel doctorProfile =
new DoctorProfileModel.fromJson(profile);
int doctorID = doctorProfile.doctorID;
int clinicId = doctorProfile.clinicID;
_referToDoctorRequest = ReferToDoctorRequest(
projectID: projectID,
admissionNo: admissionNo,
roomID: roomID,
referralClinic: selectedClinicID.toString(),
referralDoctor: selectedDoctorID.toString(),
createdBy: doctorID,
editedBy: doctorID,
patientID: patientID,
patientTypeID: patientTypeID,
referringClinic: clinicId,
referringDoctor: doctorID,
referringDoctorRemarks: referringDoctorRemarks,
priority: priority,
frequency: frequency,
extension: extension,
tokenID: token);
final response = await AppClient.post(PATIENT_REFER_TO_DOCTOR_URL,
body: json.encode(_referToDoctorRequest));
final int statusCode = response.statusCode;
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
if (statusCode < 200 || statusCode >= 400 || json == null) {
isError = true;
error = 'Error While Fetching data';
} else {
var res = json.decode(response.body);
print('$res');
if (res['MessageStatus'] == 1) {
print('Done : \n $res');
Navigator.pop(context);
} else {
isError = true;
error = res['ErrorMessage'] ?? res['ErrorEndUserMessage'];
}
}
} else {
isLoading = false;
isError = true;
this.error = error;
}, body: _referralFrequencyRequest.toJson());
error = 'Please Check The Internet Connection';
}
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);

@ -7,6 +7,7 @@ import 'package:doctor_app_flutter/models/patient/patient_model.dart';
import 'package:doctor_app_flutter/models/patient/topten_users_res_model.dart';
import 'package:doctor_app_flutter/providers/patients_provider.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/widgets/shared/app_button.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
@ -23,7 +24,7 @@ class QrReaderScreen extends StatefulWidget {
}
class _QrReaderScreenState extends State<QrReaderScreen> {
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
bool isLoading = false;
bool isError = false;
@ -72,9 +73,9 @@ DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
height: 7,
),
AppText(
'scan Qr code to retrieve patient profile',
fontSize: 14,
fontWeight: FontWeight.w400,
'scan Qr code to retrieve patient profile',
fontSize: 14,
fontWeight: FontWeight.w400,
textAlign: TextAlign.center
),
SizedBox(
@ -123,15 +124,15 @@ DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
/// var result = await BarcodeScanner.scan();
/// int patientID = get from qr result
var result = await BarcodeScanner.scan();
// if (result.rawContent == "") {
List<String> listOfParams = result.rawContent.split(',');
String patientType = "1";
setState(() {
isLoading = true;
isError = false;
patientList = [];
});
String token = await sharedPref.getString(TOKEN);
// if (result.rawContent == "") {
List<String> listOfParams = result.rawContent.split(',');
String patientType = "1";
setState(() {
isLoading = true;
isError = false;
patientList = [];
});
String token = await sharedPref.getString(TOKEN);
// Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
// DoctorProfileModel doctorProfile = new DoctorProfileModel.fromJson(profile);
// patient.PatientID = 8808;
@ -140,57 +141,64 @@ DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
// patient.setClinicID = doctorProfile.clinicID;
// patient.setProjectID = doctorProfile.projectID;
// Provider.of<PatientsProvider>(context, listen: false);
patient.PatientID = 8808;
patient.TokenID = token;
Provider.of<PatientsProvider>(context, listen: false)
.getPatientList(patient, "1")
.then((response) {
if (response['MessageStatus'] == 1) {
switch (patientType) {
case "0":
if (response['List_MyOutPatient'] != null) {
setState(() {
patientList = ModelResponse.fromJson(response['List_MyOutPatient']).list;
isLoading = false;
});
Navigator.of(context).pushNamed(PATIENTS_PROFILE, arguments: {
"patient": patientList[0],
});
} else {
setState(() {
isError = true;
error = 'No patient';
isLoading = false;
});
}
patient.PatientID = 8808;
patient.TokenID = token;
Provider.of<PatientsProvider>(context, listen: false)
.getPatientList(patient, "1")
.then((response) {
if (response['MessageStatus'] == 1) {
switch (patientType) {
case "0":
if (response['List_MyOutPatient'] != null) {
setState(() {
patientList = ModelResponse.fromJson(response['List_MyOutPatient']).list;
isLoading = false;
});
Navigator.of(context).pushNamed(PATIENTS_PROFILE, arguments: {
"patient": patientList[0],
});
} else {
setState(() {
isError = true;
isLoading = false;
});
DrAppToastMsg.showErrorToast('No patient');
}
break;
case "1":
if (response['List_MyInPatient'] != null) {
setState(() {
patientList = ModelResponse.fromJson(response['List_MyInPatient']).list;
isLoading = false;
error = "";
});
Navigator.of(context).pushNamed(PATIENTS_PROFILE, arguments: {
"patient": patientList[0],
});
} else {
setState(() {
isError = true;
isLoading = false;
});
DrAppToastMsg.showErrorToast('No patient');
break;
case "1":
if (response['List_MyInPatient'] != null) {
setState(() {
patientList = ModelResponse.fromJson(response['List_MyInPatient']).list;
isLoading = false;
error = "";
});
Navigator.of(context).pushNamed(PATIENTS_PROFILE, arguments: {
"patient": patientList[0],
});
} else {
setState(() {
error = 'No patient';
isError = true;
isLoading = false;
});
break;
}
}
} else {
setState(() {
error = response['ErrorEndUserMessage'] ?? response['ErrorMessage'] ;
isLoading = false;
isError = true;
});
}
}
} else {
setState(() {
isLoading = false;
isError = true;
});
DrAppToastMsg.showErrorToast(response['ErrorEndUserMessage'] ?? response['ErrorMessage']);
}
}).catchError((error){
setState(() {
isLoading = false;
});
}
// }
helpers.showErrorToast(error);
//DrAppToastMsg.showErrorToast(error);
});
}
// }
}

@ -41,10 +41,10 @@ class _LoginsreenState extends State<Loginsreen> {
});
}
/*
*@author: Elham Rababah
*@Date:19/4/2020
*@param: isLoading
/*
*@author: Elham Rababah
*@Date:19/4/2020
*@param: isLoading
*@return:
*@desc: Change Isloading attribute in order to show or hide loader
*/
@ -56,7 +56,7 @@ class _LoginsreenState extends State<Loginsreen> {
@override
Widget build(BuildContext context) {
AppGlobal.CONTEX = context;
getSharedPref();
return AppScaffold(
isLoading: _isLoading,
@ -80,24 +80,24 @@ class _LoginsreenState extends State<Loginsreen> {
children: <Widget>[
(platformImei == null)
? Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AuthHeader(loginType.knownUser),
LoginForm(
changeLoadingStata:
changeLoadingStata,
),
],
)
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AuthHeader(loginType.knownUser),
LoginForm(
changeLoadingStata:
changeLoadingStata,
),
],
)
: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AuthHeader(loginType.unknownUser),
KnownUserLogin(),
],
),
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AuthHeader(loginType.unknownUser),
KnownUserLogin(),
],
),
]));
}
}

@ -4,6 +4,7 @@ import 'package:doctor_app_flutter/providers/medicine_provider.dart';
import 'package:doctor_app_flutter/providers/hospital_provider.dart';
import 'package:doctor_app_flutter/providers/referral_patient_provider.dart';
import 'package:doctor_app_flutter/providers/referred_patient_provider.dart';
import 'package:doctor_app_flutter/screens/QR_reader_screen.dart';
import 'package:doctor_app_flutter/screens/medicine/medicine_search_screen.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
@ -26,7 +27,7 @@ class DashboardScreen extends StatefulWidget {
DashboardScreen({Key key, this.title}) : super(key: key);
final String title;
final String iconURL = 'assets/images/dashboard_icon/';
@override
_DashboardScreenState createState() => _DashboardScreenState();
}
@ -36,6 +37,11 @@ class _DashboardScreenState extends State<DashboardScreen> {
@override
Widget build(BuildContext context) {
FocusScopeNode currentFocus = FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus) {
currentFocus.unfocus();
}
projectsProvider = Provider.of(context);
return SafeArea(
bottom: true,
@ -43,20 +49,36 @@ class _DashboardScreenState extends State<DashboardScreen> {
body: SingleChildScrollView(
child: SizedBox(
height: MediaQuery.of(context).size.height * 1.09,
// height: MediaQuery.of(context).size.height * 0.2,
// width: SizeConfig.screenWidth * 0.9,
child: Column(
children: <Widget>[
Expanded(
flex: 1,
child: Container(
margin: EdgeInsets.all(10),
child: AppText(
TranslationBase.of(context).todayStatistics,
fontWeight: FontWeight.bold,
),
alignment: Alignment.centerLeft,
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
margin: EdgeInsets.only(left: 10, top: 10),
child: AppText(
TranslationBase.of(context).familyMedicine,
fontWeight: FontWeight.bold,
fontSize: SizeConfig.textMultiplier * 2.5,
),
alignment: Alignment.centerLeft,
),
Container(
margin: EdgeInsets.only(left: 10, top: 10, right: 10),
child: Icon(
Icons.settings,
size: SizeConfig.textMultiplier * 2.5,
))
]),
Container(
margin: EdgeInsets.only(left: 10, top: 5),
child: AppText(
TranslationBase.of(context).todayStatistics,
fontWeight: FontWeight.bold,
),
alignment: Alignment.centerLeft,
),
Expanded(
flex: 3,
@ -67,7 +89,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
flex: 2,
child: RoundedContainer(
child: CircularPercentIndicator(
radius: 115.0,
radius: 100,
animation: true,
animationDuration: 1200,
lineWidth: 7.0,
@ -80,7 +102,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
fontSize: SizeConfig.textMultiplier * 4),
AppText(TranslationBase.of(context).outPatients,
fontWeight: FontWeight.normal,
fontSize: SizeConfig.textMultiplier * 1.2,
fontSize: SizeConfig.textMultiplier * 1.1,
color: Colors.grey[800]),
],
),
@ -149,7 +171,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
Expanded(
flex: 2,
child: new DashboardItemIconText(
DoctorApp.home_icon,
widget.iconURL + 'lab_results.svg',
"08",
TranslationBase.of(context).labResult,
backgroundColor: Colors.black45,
@ -161,7 +183,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
Expanded(
flex: 2,
child: new DashboardItemIconText(
DoctorApp.home_icon,
widget.iconURL + 'radiology.svg',
"10",
TranslationBase.of(context).radiology,
backgroundColor: Colors.black45,
@ -172,7 +194,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
Expanded(
flex: 2,
child: new DashboardItemIconText(
DoctorApp.home_icon,
widget.iconURL + 'referral.svg',
"05",
TranslationBase.of(context).referral,
backgroundColor: Colors.black45,
@ -191,17 +213,17 @@ class _DashboardScreenState extends State<DashboardScreen> {
Expanded(
flex: 2,
child: new DashboardItemIconText(
DoctorApp.home_icon,
"23",
TranslationBase.of(context).inPatient,
showBorder: true,
backgroundColor: Colors.red[900],
),
widget.iconURL + 'in_patient_white.svg',
"23",
"In-Patient",
showBorder: true,
backgroundColor: Colors.red[900],
iconColor: Colors.white),
),
Expanded(
flex: 2,
child: new DashboardItemIconText(
DoctorApp.home_icon,
widget.iconURL + 'operations.svg',
"23",
TranslationBase.of(context).operations,
showBorder: true,
@ -224,13 +246,12 @@ class _DashboardScreenState extends State<DashboardScreen> {
Expanded(
flex: 2,
child: Row(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Expanded(
flex: 2,
child: InkWell(
child: DashboardItemIconText(
DoctorApp.home_icon,
widget.iconURL + 'search_patient.svg',
"",
TranslationBase.of(context).searchPatient,
showBorder: true,
@ -238,7 +259,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
valueFontColor: Colors.black,
titleFontColor: Colors.black,
iconColor: Colors.black,
titleFontSize: 16,
titleFontSize: SizeConfig.textMultiplier * 2,
),
onTap: () {
Navigator.of(context).pushNamed(PATIENT_SEARCH);
@ -260,7 +281,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
);
},
child: DashboardItemIconText(
DoctorApp.home_icon,
widget.iconURL + 'message_icon.svg',
"",
TranslationBase.of(context).doctorReply,
showBorder: true,
@ -268,7 +289,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
valueFontColor: Colors.black,
titleFontColor: Colors.black,
iconColor: Colors.black,
titleFontSize: 16,
titleFontSize: SizeConfig.textMultiplier * 2,
),
),
),
@ -284,7 +305,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
flex: 1,
child: InkWell(
child: DashboardItemIconText(
DoctorApp.home_icon,
widget.iconURL + 'search_patient.svg',
"",
TranslationBase.of(context).searchMedicine,
showBorder: true,
@ -292,7 +313,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
valueFontColor: Colors.black,
titleFontColor: Colors.black,
iconColor: Colors.black,
titleFontSize: 14,
titleFontSize: SizeConfig.textMultiplier * 2,
),
onTap: () {
Navigator.push(
@ -322,7 +343,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
);
},
child: DashboardItemIconText(
DoctorApp.home_icon,
widget.iconURL + 'referral.svg',
"",
TranslationBase.of(context).myReferralPatient,
showBorder: true,
@ -330,7 +351,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
valueFontColor: Colors.black,
titleFontColor: Colors.black,
iconColor: Colors.black,
titleFontSize: 14,
titleFontSize: SizeConfig.textMultiplier * 2,
),
),
),
@ -357,7 +378,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
);
},
child: DashboardItemIconText(
DoctorApp.home_icon,
widget.iconURL + 'referral.svg',
"",
TranslationBase.of(context).myReferredPatient,
showBorder: true,
@ -365,11 +386,29 @@ class _DashboardScreenState extends State<DashboardScreen> {
valueFontColor: Colors.black,
titleFontColor: Colors.black,
iconColor: Colors.black,
titleFontSize: 14,
titleFontSize: SizeConfig.textMultiplier * 2,
),
),
),
Expanded(
flex: 1,
child: InkWell(
onTap: () {
Navigator.of(context).pushNamed(QR_READER);
},
child: DashboardItemIconText(
widget.iconURL + 'qr-code.svg',
"",
"QR Reader",
showBorder: true,
backgroundColor: Colors.white,
valueFontColor: Colors.black,
titleFontColor: Colors.black,
iconColor: Colors.black,
titleFontSize: SizeConfig.textMultiplier * 2,
),
),
),
Expanded(flex: 1, child: Container())
],
)),
],

@ -6,8 +6,6 @@ import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indei
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../config/size_config.dart';
import '../../widgets/shared/app_scaffold_widget.dart';
class MyScheduleScreen extends StatelessWidget {
ScheduleProvider scheduleProvider;

@ -11,7 +11,6 @@ import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_text_form_field.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart';
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../util/extenstions.dart';
@ -46,7 +45,6 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
@override
Widget build(BuildContext context) {
return AppScaffold(
appBarTitle: "Search Medicine",
body: Column(
@ -61,17 +59,15 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
hintText: 'Search Medicine Name Here..',
controller: myController,
onSaved: (value) {},
// validator: (value) {
// return TextValidator().validateName(value);
// },
inputFormatter: ONLY_LETTERS),
),
Container(
margin: EdgeInsets.only(bottom: 5,
left: 10,
right: 10,
top: 0),
margin: EdgeInsets.only(
bottom: SizeConfig.heightMultiplier * 1,
right: SizeConfig.heightMultiplier * 2,
left: SizeConfig.heightMultiplier * 2,
top: SizeConfig.heightMultiplier * 1),
child: Wrap(
alignment: WrapAlignment.center,
children: <Widget>[
@ -91,15 +87,18 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
"You find " + (data == null ? "0": data.length.toString())+" items in search",
"You find " +
(data == null ? "0" : data.length.toString()) +
" items in search",
fontWeight: FontWeight.bold,
margin: 5,),
margin: 5,
),
],
),
),
Expanded(
child: Container(
width: SizeConfig.screenWidth * 0.80,
width: SizeConfig.screenWidth * 0.90,
child: !_medicineProvider.isFinished
? DrAppCircularProgressIndeicator()
: _medicineProvider.hasError
@ -109,32 +108,33 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
style: TextStyle(
color: Theme.of(context).errorColor),
),
):ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: data == null ? 0 : data.length,
itemBuilder: (BuildContext context, int index) {
return InkWell(
child: MedicineItemWidget(
label: data[index]["ItemDescription"],
url: data[index]["ProductImageBase64"],
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ChangeNotifierProvider(
create: (_) => MedicineProvider(),
child: PharmaciesListScreen(
itemID: data[index]["ItemID"]),
),
)
: ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: data == null ? 0 : data.length,
itemBuilder: (BuildContext context, int index) {
return InkWell(
child: MedicineItemWidget(
label: data[index]["ItemDescription"],
url: data[index]["ProductImageBase64"],
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
ChangeNotifierProvider(
create: (_) => MedicineProvider(),
child: PharmaciesListScreen(
itemID: data[index]["ItemID"], url: data[index]["ProductImageBase64"]),
),
),
);
},
);
},
),
);
},
);
},
),
),
),
],

@ -1,11 +1,10 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'dart:convert';
import 'dart:typed_data';
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/models/pharmacies_List_request_model.dart';
import 'package:doctor_app_flutter/providers/medicine_provider.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/widgets/medicine/medicine_item_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart';
@ -20,8 +19,11 @@ DrAppSharedPreferances sharedPref = DrAppSharedPreferances();
class PharmaciesListScreen extends StatefulWidget {
final int itemID;
final String url;
// In the constructor, require a item id.
PharmaciesListScreen({Key key, @required this.itemID}) : super(key: key);
PharmaciesListScreen({Key key, @required this.itemID, this.url})
: super(key: key);
@override
_PharmaciesListState createState() => _PharmaciesListState();
@ -61,44 +63,77 @@ class _PharmaciesListState extends State<PharmaciesListScreen> {
TextStyle(color: Theme.of(context).errorColor),
),
)
: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
AppText(
"Description",
margin: 10,
fontWeight: FontWeight.bold,
),
AppText(
_data[0]["ItemDescription"],
marginLeft: 10,
marginTop: 0,
marginRight: 10,
marginBottom: 10,
),
AppText(
"Price",
margin: 10,
fontWeight: FontWeight.bold,
),
AppText(
_data[0]["SellingPrice"].toString(),
marginLeft: 10,
marginTop: 0,
marginRight: 10,
marginBottom: 10,
),
],
)),
: StreamBuilder<Object>(
stream: null,
builder: (context, snapshot) {
return Row(
children: <Widget>[
Expanded(
flex: 1,
child: ClipRRect(
borderRadius:
BorderRadius.all(Radius.circular(7)),
child: Image.memory(
dataFromBase64String(widget.url),
height: SizeConfig.imageSizeMultiplier * 21,
width: SizeConfig.imageSizeMultiplier * 20,
fit: BoxFit.cover,
),
),
),
Expanded(
flex: 3,
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.stretch,
children: <Widget>[
AppText(
"Description",
marginLeft: 10,
marginTop: 0,
marginRight: 10,
marginBottom: 2,
fontWeight: FontWeight.bold,
),
AppText(
_data[0]["ItemDescription"],
marginLeft: 10,
marginTop: 0,
marginRight: 10,
marginBottom: 10,
),
AppText(
"Price",
marginLeft: 10,
marginTop: 0,
marginRight: 10,
marginBottom: 2,
fontWeight: FontWeight.bold,
),
AppText(
_data[0]["SellingPrice"].toString(),
marginLeft: 10,
marginTop: 0,
marginRight: 10,
marginBottom: 10,
),
],
),
)
],
);
})),
Container(
margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5),
margin: EdgeInsets.only(top:SizeConfig.widthMultiplier * 2,
bottom: SizeConfig.widthMultiplier * 2,
right: SizeConfig.widthMultiplier * 4,
left: SizeConfig.widthMultiplier * 4,),
child: Align(
alignment: Alignment.centerLeft,
child: AppText(
"You can Find it in",
fontWeight: FontWeight.bold,
fontSize: SizeConfig.textMultiplier * 3,
))),
Expanded(
child: Container(
@ -114,7 +149,8 @@ class _PharmaciesListState extends State<PharmaciesListScreen> {
Expanded(
flex: 1,
child: ClipRRect(
borderRadius:BorderRadius.all(Radius.circular(7)),
borderRadius:
BorderRadius.all(Radius.circular(7)),
child: Image.network(
_data[index]["ProjectImageURL"],
height: SizeConfig.imageSizeMultiplier * 15,
@ -138,25 +174,36 @@ class _PharmaciesListState extends State<PharmaciesListScreen> {
crossAxisAlignment: WrapCrossAlignment.end,
children: <Widget>[
Padding(
padding: EdgeInsets.all(5),
child: InkWell(child: Icon(Icons.call, color: Colors.red,),onTap: ()=>launch(
"tel://" + _data[index]["PhoneNumber"]),),
),
Padding(
padding: EdgeInsets.all(5),
child: InkWell(child: Icon(Icons.pin_drop, color: Colors.red,),onTap: () {
MapsLauncher.launchCoordinates(
double.parse(_data[index]["Latitude"]),
double.parse(_data[index]["Longitude"]),
_data[index]["LocationDescription"]);
},),
),
padding: EdgeInsets.all(5),
child: InkWell(
child: Icon(
Icons.call,
color: Colors.red,
),
onTap: () => launch(
"tel://" + _data[index]["PhoneNumber"]),
),
),
Padding(
padding: EdgeInsets.all(5),
child: InkWell(
child: Icon(
Icons.pin_drop,
color: Colors.red,
),
onTap: () {
MapsLauncher.launchCoordinates(
double.parse(
_data[index]["Latitude"]),
double.parse(
_data[index]["Longitude"]),
_data[index]["LocationDescription"]);
},
),
),
],
),
),
],
),
);
@ -170,9 +217,20 @@ Padding(
_medicineProvider.getPharmaciesList(widget.itemID).then((result) {
this.setState(() {
_data = _medicineProvider.pharmaciesList;
//if(_data == null || _data.length == 0)
});
});
return true;
}
Image imageFromBase64String(String base64String) {
return Image.memory(base64Decode(base64String));
}
Uint8List dataFromBase64String(String base64String) {
return base64Decode(base64String);
}
String base64String(Uint8List data) {
return base64Encode(data);
}
}

@ -135,11 +135,21 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
SizedBox(
height: 5,
),
RoundedContainer(
margin: 0,
showBorder: true,
raduis: 30,
borderColor: Color(0xff707070),
Container(
decoration: ShapeDecoration(
shape: RoundedRectangleBorder(
side: BorderSide(
width: 1.0,
style: BorderStyle.solid,
color: Color(0xff707070)),
borderRadius:
BorderRadius.all(Radius.circular(5.0)),
),
),
// margin: 0,
// showBorder: true,
// raduis: 30,
// borderColor: Color(0xff707070),
width: double.infinity,
child: Padding(
padding: EdgeInsets.only(
@ -314,11 +324,21 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
SizedBox(
height: 10,
),
RoundedContainer(
margin: 0,
showBorder: true,
raduis: 30,
borderColor: Color(0xff707070),
Container(
// margin: 0,
// showBorder: true,
// raduis: 30,
// borderColor: Color(0xff707070),
decoration: ShapeDecoration(
shape: RoundedRectangleBorder(
side: BorderSide(
width: 1.0,
style: BorderStyle.solid,
color: Color(0xff707070)),
borderRadius:
BorderRadius.all(Radius.circular(5.0)),
),
),
width: double.infinity,
child: Padding(
padding: EdgeInsets.only(

@ -315,7 +315,7 @@ class _PatientsScreenState extends State<PatientsScreen> {
child: Center(
child: Padding(
padding: const EdgeInsets.fromLTRB(
0, 0, 0, 0),//250
0, 0, 0, 0), //250
child:
DrAppCircularProgressIndeicator(),
)),
@ -374,7 +374,7 @@ class _PatientsScreenState extends State<PatientsScreen> {
widget: Column(
children: <Widget>[
Container(
// decoration: myBoxDecoration(),
// decoration: myBoxDecoration(),
child: Row(
children: <Widget>[
Column(
@ -386,36 +386,28 @@ class _PatientsScreenState extends State<PatientsScreen> {
"Male"
? [
SvgPicture.asset(
url +
avatarMale,
height:
80.0,
width:
80.0,
semanticsLabel:
'Male Logo')
url + avatarMale,
height: 80.0,
width: 80.0,
semanticsLabel: 'Male Logo')
]
: [
SvgPicture.asset(
url +
avatarFemale,
height:
80.0,
width:
80.0,
semanticsLabel:
'Female Logo')
url + avatarFemale,
height: 80.0,
width: 80.0,
semanticsLabel: 'Female Logo')
],
),
SizedBox(
width: 10,
),
width: 10,
),
Column(
crossAxisAlignment:
CrossAxisAlignment
.start,
children: <Widget>[
children: <
Widget>[
AppText(
item.firstName +
" " +
@ -427,7 +419,8 @@ class _PatientsScreenState extends State<PatientsScreen> {
FontWeight
.bold,
backGroundcolor:
Colors.white,
Colors
.white,
),
SizedBox(
height: 8,
@ -443,7 +436,8 @@ class _PatientsScreenState extends State<PatientsScreen> {
FontWeight
.bold,
backGroundcolor:
Colors.white,
Colors
.white,
),
// SizedBox(
@ -460,19 +454,18 @@ class _PatientsScreenState extends State<PatientsScreen> {
FontWeight
.bold,
backGroundcolor:
Colors.white,
Colors
.white,
),
SizedBox(
height: 8,
),
SERVICES_PATIANT2[int
.parse(
patientType)] ==
SERVICES_PATIANT2[
int.parse(patientType)] ==
"List_MyOutPatient"
? Row(
mainAxisAlignment:
MainAxisAlignment
.spaceBetween,
MainAxisAlignment.spaceBetween,
children: <
Widget>[
Container(
@ -482,22 +475,16 @@ class _PatientsScreenState extends State<PatientsScreen> {
80,
decoration:
BoxDecoration(
borderRadius:
BorderRadius.circular(50),
color:
Hexcolor("#20A169"),
borderRadius: BorderRadius.circular(50),
color: Hexcolor("#20A169"),
),
child:
AppText(
item.startTime,
color:
Colors.white,
fontSize:
2 * SizeConfig.textMultiplier,
textAlign:
TextAlign.center,
fontWeight:
FontWeight.bold,
color: Colors.white,
fontSize: 2 * SizeConfig.textMultiplier,
textAlign: TextAlign.center,
fontWeight: FontWeight.bold,
),
),
SizedBox(
@ -507,50 +494,44 @@ class _PatientsScreenState extends State<PatientsScreen> {
Container(
child:
AppText(
convertDateFormat2(item
.appointmentDate
.toString()),
fontSize:
2.0 * SizeConfig.textMultiplier,
fontWeight:
FontWeight.bold,
convertDateFormat2(item.appointmentDate.toString()),
fontSize: 2.0 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
)
],
)
: AppText(
item.nationalityName,
fontSize: 2.5 *
SizeConfig
.textMultiplier,
fontSize:
2.5 *
SizeConfig.textMultiplier,
),
],
),
// Divider(color: Colors.grey)
// Divider(color: Colors.grey)
],
),
),
// Divider(color: Colors.grey)
// Divider(color: Colors.grey)
],
),
),
onTap: () {
Navigator.of(context).pushNamed(
PATIENTS_PROFILE,
arguments: {
Navigator.of(context)
.pushNamed(
PATIENTS_PROFILE,
arguments: {
"patient": item
});
},
),
);
}).toList(),
}).toList(),
),
),
],
),
)
],
),
@ -587,8 +568,7 @@ class _PatientsScreenState extends State<PatientsScreen> {
crossAxisAlignment: CrossAxisAlignment.center,
children: _locations.map((item) {
bool _isActive = _locations[_activeLocation] == item ? true : false;
return Column(mainAxisSize: MainAxisSize.min,
children: <Widget>[
return Column(mainAxisSize: MainAxisSize.min, children: <Widget>[
InkWell(
child: Center(
child: Container(
@ -601,18 +581,17 @@ class _PatientsScreenState extends State<PatientsScreen> {
child: Center(
child: Text(
item,
style: TextStyle(
fontSize: 12,
color: _isActive
? Colors.white
: Colors.black, //Colors.black,
// backgroundColor:_isActive
// ? Hexcolor("#B8382B")
// : Colors.white,//sideColor,
fontWeight: FontWeight.bold,
),
fontSize: 12,
color: _isActive
? Colors.white
: Colors.black, //Colors.black,
// backgroundColor:_isActive
// ? Hexcolor("#B8382B")
// : Colors.white,//sideColor,
fontWeight: FontWeight.bold,
),
),
)),
),
@ -623,7 +602,6 @@ class _PatientsScreenState extends State<PatientsScreen> {
setState(() {
_activeLocation = _locations.indexOf(item);
});
}),
_isActive
@ -643,17 +621,14 @@ class _PatientsScreenState extends State<PatientsScreen> {
}
myBoxDecoration() {
return BoxDecoration(
border: Border(
bottom: BorderSide( // <--- top side
bottom: BorderSide(
// <--- top side
color: Colors.grey,
width: 1.0,
),
),
);
}
}

@ -1,5 +1,6 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/models/patient/insurance_aprovals_request.dart';
import 'package:doctor_app_flutter/presentation/doctor_app_icons.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart';
@ -116,29 +117,46 @@ class _InsuranceApprovalsState extends State<InsuranceApprovalsScreen> {
ExpansionTile(
title: Row(
children: <Widget>[
Icon(
approvalsList[index][
"ApprovalStatusDescption"]
.toString()
.contains("Approved")
? Icons.check_circle_outline
: approvalsList[index][
Column(
children: <Widget>[
Icon(
approvalsList[index][
"ApprovalStatusDescption"]
.toString()
.contains("Cancelled")
? Icons.highlight_off
: Icons.history,
color: approvalsList[index][
"ApprovalStatusDescption"]
.toString()
.contains("Approved")
? Colors.green
: approvalsList[index][
.contains("Approved")
? DoctorApp.approved_icon
: approvalsList[index][
"ApprovalStatusDescption"]
.toString()
.contains("Cancelled")
? DoctorApp.reject_icon
: DoctorApp.pending_icon,
color: approvalsList[index][
"ApprovalStatusDescption"]
.toString()
.contains("Cancelled")
? Colors.red
: Colors.yellow,
.contains("Approved")
? Colors.green
: approvalsList[index][
"ApprovalStatusDescption"]
.toString()
.contains("Cancelled")
? Colors.red
: Colors.yellow,
),
AppText(approvalsList[index]["ApprovalStatusDescption"],
fontSize: SizeConfig.textMultiplier * 1.5,
color: approvalsList[index][
"ApprovalStatusDescption"]
.toString()
.contains("Approved")
? Colors.green
: approvalsList[index][
"ApprovalStatusDescption"]
.toString()
.contains("Cancelled")
? Colors.red
: Colors.yellow,)
],
),
Expanded(
child: Column(
@ -186,15 +204,8 @@ class _InsuranceApprovalsState extends State<InsuranceApprovalsScreen> {
backgroundColor:
Color(PRIMARY_COLOR),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
children: <Widget>[
AppText(
"Approval No:",
color: Colors.white,
fontSize: 16,
margin: 10,
),
AppText(
approvalsList[index]
["ApprovalNo"]
@ -203,10 +214,21 @@ class _InsuranceApprovalsState extends State<InsuranceApprovalsScreen> {
fontSize: 19,
fontWeight:
FontWeight.bold,
margin: 5,
marginTop: 10,
marginLeft: 10,
marginRight: 10,
marginBottom: 2,
),
AppText(
"Approval No:",
color: Colors.white,
fontSize: 16,
marginTop: 2,
marginLeft: 10,
marginBottom: 15,
marginRight: 10,
),
],
),
Row(
children: <Widget>[
Expanded(

@ -20,7 +20,7 @@ DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
/*
*@author: ibrahim albitar
*@Date:15/5/2020
*@param:
*@param: '
*@return:
*@desc:
*/
@ -182,7 +182,7 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
if (strExist) {
filteredNotesList = null;
filteredNotesList = notesList
filteredNotesList = patientsProv.patientProgressNoteList
.where((note) =>
note["DoctorName"].toString().contains(str.toUpperCase()))
.toList();

@ -79,116 +79,112 @@ class _RadiologyScreenState extends State<RadiologyScreen> {
body: patientsProv.isLoading
? DrAppCircularProgressIndeicator()
: patientsProv.isError
? DrAppEmbeddedError(error: patientsProv.error)
: patientsProv.patientRadiologyList.length == 0
? DrAppEmbeddedError(error: 'You don\'t have any Vital Sign')
: Container(
margin: EdgeInsets.fromLTRB(
SizeConfig.realScreenWidth * 0.05,
0,
SizeConfig.realScreenWidth * 0.05,
0),
child: Container(
margin: EdgeInsets.symmetric(vertical: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(20.0),
),
),
child: ListView.builder(
itemCount: patientsProv.patientRadiologyList.length,
itemBuilder: (BuildContext context, int index) {
return InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => RadiologyReportScreen(reportData: patientsProv.patientRadiologyList[index].reportData,)),);
},
child: Container(
padding: EdgeInsets.all(10),
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
borderRadius:
BorderRadius.all(Radius.circular(10)),
border: Border(
bottom: BorderSide(
color: Colors.grey, width: 0.5),
top: BorderSide(
color: Colors.grey, width: 0.5),
left: BorderSide(
color: Colors.grey, width: 0.5),
right: BorderSide(
color: Colors.grey, width: 0.5),
? DrAppEmbeddedError(error: patientsProv.error)
: patientsProv.patientRadiologyList.length == 0
? DrAppEmbeddedError(error: 'You don\'t have any Vital Sign')
: Container(
margin: EdgeInsets.fromLTRB(
SizeConfig.realScreenWidth * 0.05,
0,
SizeConfig.realScreenWidth * 0.05,
0),
child: Container(
margin: EdgeInsets.symmetric(vertical: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(20.0),
),
),
child: ListView.builder(
itemCount: patientsProv.patientRadiologyList.length,
itemBuilder: (BuildContext context, int index) {
return InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => RadiologyReportScreen(reportData: patientsProv.patientRadiologyList[index].reportData,)),);
},
child: Container(
padding: EdgeInsets.all(10),
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
borderRadius:
BorderRadius.all(Radius.circular(10)),
border: Border(
bottom: BorderSide(
color: Colors.grey, width: 0.5),
top: BorderSide(
color: Colors.grey, width: 0.5),
left: BorderSide(
color: Colors.grey, width: 0.5),
right: BorderSide(
color: Colors.grey, width: 0.5),
),
),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
Row(
children: <Widget>[
LargeAvatar(
url: patientsProv
.patientRadiologyList[index]
.doctorImageURL,
),
Expanded(
child: Padding(
padding:
const EdgeInsets.fromLTRB(
8, 0, 0, 0),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'${patientsProv.patientRadiologyList[index].doctorName}',
fontSize: 2.5 *
SizeConfig
.textMultiplier,
fontWeight:
FontWeight.bold),
SizedBox(
height: 8,
),
AppText(
'Invoice No:${patientsProv.patientRadiologyList[index].invoiceNo}',
fontSize: 2 *
SizeConfig
.textMultiplier,
),
SizedBox(
height: 8,
),
),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
Row(
children: <Widget>[
LargeAvatar(
url: patientsProv
.patientRadiologyList[index]
.doctorImageURL,
name: patientsProv
.patientLabResultOrdersList[
index]
.doctorName,
),
Expanded(
child: Padding(
padding:
const EdgeInsets.fromLTRB(
8, 0, 0, 0),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'${patientsProv.patientRadiologyList[index].doctorName}',
fontSize: 2.5 *
SizeConfig
.textMultiplier,
fontWeight:
FontWeight.bold),
SizedBox(
height: 8,
),
AppText(
'Invoice No:${patientsProv.patientRadiologyList[index].invoiceNo}',
fontSize: 2 *
SizeConfig
.textMultiplier,
),
SizedBox(
height: 8,
),
AppText(
' ${patientsProv.patientRadiologyList[index].clinicName}',
fontSize: 2 *
SizeConfig
.textMultiplier,
color: Theme.of(context)
.primaryColor,
),
SizedBox(
height: 8,
),
],
),
),
)
],
),
],
),
AppText(
' ${patientsProv.patientRadiologyList[index].clinicName}',
fontSize: 2 *
SizeConfig
.textMultiplier,
color: Theme.of(context)
.primaryColor,
),
SizedBox(
height: 8,
),
],
),
);
}),
),
),
)
],
),
],
),
),
);
}),
),
),
);
}
}

@ -1,6 +1,13 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_text_form_field.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import '../../../config/size_config.dart';
import '../../../providers/patients_provider.dart';
@ -27,26 +34,29 @@ class ReferPatientScreen extends StatefulWidget {
class _ReferPatientState extends State<ReferPatientScreen> {
PatientsProvider patientsProv;
var doctorsList;
var clinicsList;
var referralFrequancyList;
final _controller = TextEditingController();
final _remarksController = TextEditingController();
final _extController = TextEditingController();
var _isInit = true;
var clinicId;
var doctorId;
var freqId;
String _selectedClinic;
String _selectedDoctor;
String _selectedReferralFrequancy;
List<String> _priorities = ['Very Urgent', 'Urgent', 'Routine'];
int _activePriority = 2;
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_isInit) {
doctorsList = null;
patientsProv = Provider.of<PatientsProvider>(context);
patientsProv.getClinicsList();
patientsProv.getReferralFrequancyList();
setState(() {
clinicsList = patientsProv.clinicsList;
referralFrequancyList = patientsProv.referalFrequancyList;
});
patientsProv.getReferralFrequancyList();
}
_isInit = false;
}
@ -54,214 +64,413 @@ class _ReferPatientState extends State<ReferPatientScreen> {
@override
Widget build(BuildContext context) {
return AppScaffold(
appBarTitle: "Progress Note",
appBarTitle: "Refer Patient",
body: patientsProv.isLoading
? DrAppCircularProgressIndeicator()
: patientsProv.isError
? DrAppEmbeddedError(error: patientsProv.error)
: clinicsList == null
: patientsProv.clinicsList == null
? DrAppEmbeddedError(
error: 'You don\'t have any Progress Note')
: Column(
children: <Widget>[
RoundedContainer(
margin: 0,
showBorder: true,
raduis: 30,
borderColor: Color(0xff707070),
width: double.infinity,
child: Padding(
padding: EdgeInsets.only(
top: SizeConfig.widthMultiplier * 0.9,
bottom: SizeConfig.widthMultiplier * 0.9,
right: SizeConfig.widthMultiplier * 3,
left: SizeConfig.widthMultiplier * 3),
child: Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Expanded(
// add Expanded to have your dropdown button fill remaining space
child: DropdownButton(
isExpanded: true,
value: _selectedClinic,
iconSize: 40,
elevation: 16,
selectedItemBuilder:
(BuildContext context) {
return patientsProv
error: 'Something Wrong!')
: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
"Clinic",
fontSize: 18,
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
RoundedContainer(
margin: 10,
showBorder: true,
raduis: 30,
borderColor: Color(0xff707070),
width: double.infinity,
child: Padding(
padding: EdgeInsets.only(
top: SizeConfig.widthMultiplier * 0.9,
bottom: SizeConfig.widthMultiplier * 0.9,
right: SizeConfig.widthMultiplier * 3,
left: SizeConfig.widthMultiplier * 3),
child: Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Expanded(
// add Expanded to have your dropdown button fill remaining space
child: DropdownButton(
isExpanded: true,
value: _selectedClinic,
iconSize: 40,
elevation: 16,
selectedItemBuilder:
(BuildContext context) {
return patientsProv
.getClinicNameList()
.map((item) {
return Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
AppText(
item,
fontSize:
SizeConfig.textMultiplier *
2.1,
),
],
);
}).toList();
},
onChanged: (newValue) => {
setState(() {
_selectedDoctor = null;
_selectedClinic = newValue;
var clinicInfo = patientsProv.clinicsList.where((i) =>
i['ClinicDescription']
.toString()
.contains(_selectedClinic)).toList();
clinicId =
clinicInfo[0]['ClinicID'].toString();
patientsProv.getDoctorsList(clinicId);
})
},
items: patientsProv
.getClinicNameList()
.map((item) {
return Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
AppText(
item,
fontSize:
SizeConfig.textMultiplier *
2.1,
),
],
return DropdownMenuItem(
value: item.toString(),
child: Text(
item,
textAlign: TextAlign.end,
),
);
}).toList();
},
onChanged: (newValue) => {
setState(() {
_selectedDoctor = null;
_selectedClinic = newValue;
var clinicInfo =
clinicsList.singleWhere((i) =>
i['ClinicDescription']
.toString()
.contains(_selectedClinic));
var clinicId =
clinicInfo['ClinicID'].toString();
patientsProv.getDoctorsList(clinicId);
})
},
items: patientsProv
.getClinicNameList()
.map((item) {
return DropdownMenuItem(
value: item.toString(),
child: Text(
item,
textAlign: TextAlign.end,
),
);
}).toList(),
}).toList(),
),
),
),
],
],
),
),
),
),
//--------------------------------------------------------------------//
RoundedContainer(
margin: 0,
showBorder: true,
raduis: 30,
borderColor: Color(0xff707070),
width: double.infinity,
child: Padding(
padding: EdgeInsets.only(
top: SizeConfig.widthMultiplier * 0.9,
bottom: SizeConfig.widthMultiplier * 0.9,
right: SizeConfig.widthMultiplier * 3,
left: SizeConfig.widthMultiplier * 3),
child: Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Expanded(
// add Expanded to have your dropdown button fill remaining space
child: DropdownButton(
isExpanded: true,
value: _selectedDoctor,
iconSize: 40,
elevation: 16,
selectedItemBuilder:
(BuildContext context) {
return patientsProv
//--------------------------------------------------------------------//
AppText(
"Doctor",
fontSize: 18,
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
RoundedContainer(
margin: 10,
showBorder: true,
raduis: 30,
borderColor: Color(0xff707070),
width: double.infinity,
child: Padding(
padding: EdgeInsets.only(
top: SizeConfig.widthMultiplier * 0.9,
bottom: SizeConfig.widthMultiplier * 0.9,
right: SizeConfig.widthMultiplier * 3,
left: SizeConfig.widthMultiplier * 3),
child: Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Expanded(
// add Expanded to have your dropdown button fill remaining space
child: DropdownButton(
isExpanded: true,
value: _selectedDoctor,
iconSize: 40,
elevation: 16,
selectedItemBuilder:
(BuildContext context) {
return patientsProv
.getDoctorNameList()
.map((item) {
return Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
AppText(
item,
fontSize:
SizeConfig.textMultiplier *
2.1,
),
],
);
}).toList();
},
onChanged: (newValue) => {
setState(() {
_selectedDoctor = newValue;
doctorsList = patientsProv.doctorsList;
var doctorInfo =
doctorsList.where((i) =>
i['DoctorName']
.toString()
.contains(_selectedDoctor)).toList();
doctorId = doctorInfo[0]['DoctorID'].toString();
})
},
items: patientsProv
.getDoctorNameList()
.map((item) {
return Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
AppText(
item,
fontSize:
SizeConfig.textMultiplier *
2.1,
),
],
return DropdownMenuItem(
value: item.toString(),
child: Text(
item,
textAlign: TextAlign.end,
),
);
}).toList();
},
onChanged: (newValue) => {
setState(() {
_selectedDoctor = newValue;
})
},
items: patientsProv
.getDoctorNameList()
.map((item) {
return DropdownMenuItem(
value: item.toString(),
child: Text(
item,
textAlign: TextAlign.end,
),
);
}).toList(),
}).toList(),
),
),
),
],
],
),
),
), //-----------------------------///
AppText(
"Ext#",
fontSize: 18,
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
Padding(
padding: const EdgeInsets.all(10.0),
child: AppTextFormField(
hintText: "Ext#",
controller: _extController,
inputFormatter: ONLY_NUMBERS,
textInputType: TextInputType.number,
onChanged: (value) => {},
),
),
AppText(
"Priority",
fontSize: 18,
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
priorityBar(context),
AppText(
"Replay Before: " + getPriority(),
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
AppText(
"Referral Frequency",
fontSize: 18,
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
), //-----------------------------///
RoundedContainer(
margin: 0,
showBorder: true,
raduis: 30,
borderColor: Color(0xff707070),
width: double.infinity,
child: Padding(
padding: EdgeInsets.only(
top: SizeConfig.widthMultiplier * 0.9,
bottom: SizeConfig.widthMultiplier * 0.9,
right: SizeConfig.widthMultiplier * 3,
left: SizeConfig.widthMultiplier * 3),
child: Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Expanded(
// add Expanded to have your dropdown button fill remaining space
child: DropdownButton(
isExpanded: true,
value: _selectedReferralFrequancy,
iconSize: 40,
elevation: 16,
selectedItemBuilder:
(BuildContext context) {
return patientsProv
RoundedContainer(
margin: 10,
showBorder: true,
raduis: 30,
borderColor: Color(0xff707070),
width: double.infinity,
child: Padding(
padding: EdgeInsets.only(
top: SizeConfig.widthMultiplier * 0.9,
bottom: SizeConfig.widthMultiplier * 0.9,
right: SizeConfig.widthMultiplier * 3,
left: SizeConfig.widthMultiplier * 3),
child: Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Expanded(
// add Expanded to have your dropdown button fill remaining space
child: DropdownButton(
isExpanded: true,
value: _selectedReferralFrequancy,
iconSize: 40,
elevation: 16,
selectedItemBuilder:
(BuildContext context) {
return patientsProv
.getReferralNamesList()
.map((item) {
return Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
AppText(
item,
fontSize:
SizeConfig.textMultiplier *
2.1,
),
],
);
}).toList();
},
onChanged: (newValue) => {
setState(() {
_selectedReferralFrequancy = newValue;
var freqInfo =
patientsProv.referalFrequancyList.singleWhere((i) =>
i['Description']
.toString()
.contains(_selectedReferralFrequancy));
freqId =
freqInfo['ParameterCode'].toString();
})
},
items: patientsProv
.getReferralNamesList()
.map((item) {
return Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
AppText(
item,
fontSize:
SizeConfig.textMultiplier *
2.1,
),
],
return DropdownMenuItem(
value: item.toString(),
child: Text(
item,
textAlign: TextAlign.end,
),
);
}).toList();
},
onChanged: (newValue) => {
setState(() {
_selectedReferralFrequancy = newValue;
})
},
items: patientsProv
.getReferralNamesList()
.map((item) {
return DropdownMenuItem(
value: item.toString(),
child: Text(
item,
textAlign: TextAlign.end,
),
);
}).toList(),
}).toList(),
),
),
),
],
],
),
),
),
AppText(
"Clinical Details and Remarks",
fontSize: 18,
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
Padding(
padding: const EdgeInsets.all(10.0),
child: AppTextFormField(
hintText: "Remarks",
controller: _remarksController,
inputFormatter: ONLY_LETTERS,
textInputType: TextInputType.text,
onChanged: (value) => {},
),
),
Padding(
padding: const EdgeInsets.all(20.0),
child: AppButton(title: "Send", color: Color(PRIMARY_COLOR),onPressed: ()=>{
referToDoctor(context)
},),
)
],
),
),
);
}
Widget priorityBar(BuildContext _context) {
return Container(
height: MediaQuery.of(context).size.height * 0.065,
width: SizeConfig.screenWidth * 0.9,
margin: EdgeInsets.only(top: 10),
decoration: BoxDecoration(
color: Color(0Xffffffff), borderRadius: BorderRadius.circular(20)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.center,
children: _priorities.map((item) {
bool _isActive = _priorities[_activePriority] == item ? true : false;
return Column(mainAxisSize: MainAxisSize.min, children: <Widget>[
InkWell(
child: Center(
child: Container(
height: 40,
width: 90,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(50),
color: _isActive ? Hexcolor("#B8382B") : Colors.white,
),
child: Center(
child: Text(
item,
style: TextStyle(
fontSize: 12,
color: _isActive
? Colors.white
: Colors.black, //Colors.black,
// backgroundColor:_isActive
// ? Hexcolor("#B8382B")
// : Colors.white,//sideColor,
fontWeight: FontWeight.bold,
),
),
],
),
)),
),
onTap: () {
print(_priorities.indexOf(item));
setState(() {
_activePriority = _priorities.indexOf(item);
});
}),
_isActive
? Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Colors.white),
alignment: Alignment.center,
height: 3,
width: 90,
)
: Container()
]);
}).toList(),
),
);
}
String getPriority() {
DateTime date = DateTime.now();
switch (_activePriority) {
case 0:
date = date.add(new Duration(hours: 3));
break;
case 1:
date = date.add(new Duration(hours: 6));
break;
case 2:
date = date.add(new Duration(days: 1));
break;
}
var format = DateFormat('yyyy/mm/dd HH:mm a');
var time = format.format(date);
print(time);
return time;
}
void referToDoctor(context){
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient'];
patientsProv.referToDoctor(context,
extension: _extController.value.text,
admissionNo:int.parse( patient.admissionNo),
referringDoctorRemarks: _remarksController.value.text,
frequency: freqId,
patientID: patient.patientId,
patientTypeID: patient.patientType,
priority: (_activePriority + 1).toString(),
roomID: patient.roomId,
selectedClinicID: clinicId.toString(),
selectedDoctorID: doctorId.toString(),
projectID: patient.projectId
);
}
}

@ -99,7 +99,7 @@ class _VitalSignDetailsScreenState extends State<VitalSignDetailsScreen> {
vitalSignDetails.bodyMeasurements
});
},
child: Expanded(
child: Container(
child: VitalSignItem(
des: 'Body Measurements',
url: url + 'heartbeat.png',
@ -118,7 +118,7 @@ class _VitalSignDetailsScreenState extends State<VitalSignDetailsScreen> {
});
},
child: Expanded(
child: Container(
child: VitalSignItem(
des: 'Temperature',
url: url + 'heartbeat.png',

@ -82,4 +82,14 @@ class DrAppSharedPreferances {
}
return json.decode(string);
}
clear() async {
final SharedPreferences prefs = await _prefs;
prefs.clear();
}
remove(String key) async {
final SharedPreferences prefs = await _prefs;
prefs.remove(key);
}
}

@ -1,12 +1,16 @@
import 'package:doctor_app_flutter/models/list_doctor_working_hours_table_model.dart';
import 'package:doctor_app_flutter/routes.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:doctor_app_flutter/config/config.dart';
import '../config/size_config.dart';
import '../util/dr_app_toast_msg.dart';
import 'package:connectivity/connectivity.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
/*
*@author: Elham Rababah
@ -48,10 +52,6 @@ class Helpers {
onPressed: () {
Navigator.pop(context);
},
// padding: const EdgeInsets.symmetric(
// horizontal: 16.0,
// vertical: 5.0,
// ),
),
CupertinoButton(
child: Text(
@ -97,7 +97,7 @@ class Helpers {
children: items.map((item) {
return Text(
'${item["$decKey"]}',
style: TextStyle(fontSize: SizeConfig.textMultiplier * 3),
style: TextStyle(fontSize: SizeConfig.textMultiplier * 2),
);
}).toList(),
@ -164,14 +164,15 @@ class Helpers {
),
);
}
/*
/*
*@author: Amjad Amireh
*@Date:5/5/2020
*@param: checkDate
*@return: DateTime
*@desc: convert String to DateTime
*/
static String checkDate(String dateString) {
static String checkDate(String dateString) {
DateTime checkedTime = DateTime.parse(dateString);
DateTime currentTime = DateTime.now();
@ -257,6 +258,7 @@ static String checkDate(String dateString) {
return "Sunday";
}
}
/*
*@author: Mohammad Aljammal
*@Date:26/5/2020
@ -275,6 +277,7 @@ static String checkDate(String dateString) {
else
return "";
}
/*
*@author: Mohammad Aljammal
*@Date:26/5/2020
@ -301,13 +304,14 @@ static String checkDate(String dateString) {
*@return: List<WorkingHours>
*@desc: convert workingHours string to List<WorkingHours>
*/
static List<WorkingHours> getWorkingHours(String workingHours ){
List<WorkingHours> myWorkingHours =[];
static List<WorkingHours> getWorkingHours(String workingHours) {
List<WorkingHours> myWorkingHours = [];
List<String> listOfHours = workingHours.split('a');
listOfHours.forEach((element) {
WorkingHours workingHours = WorkingHours();
var from = element.substring(element.indexOf('m ') + 2 , element.indexOf('To')-2);
var from = element.substring(
element.indexOf('m ') + 2, element.indexOf('To') - 2);
workingHours.from = from.trim();
var to = element.substring(element.indexOf('To') + 2);
workingHours.to = to.trim();
@ -316,9 +320,6 @@ static String checkDate(String dateString) {
return myWorkingHours;
}
/*
*@author: Elham Rababah
*@Date:12/5/2020
@ -333,4 +334,13 @@ static String checkDate(String dateString) {
}
return localMsg;
}
clearSharedPref() async {
await sharedPref.clear();
}
logout() async {
await clearSharedPref();
Navigator.of(AppGlobal.CONTEX).pushReplacementNamed(LOGIN);
}
}

@ -59,6 +59,8 @@ class TranslationBase {
String get labResult => localizedValues['labResult'][locale.languageCode];
String get todayStatistics =>
localizedValues['todayStatistics'][locale.languageCode];
String get familyMedicine =>
localizedValues['familyMedicine'][locale.languageCode];
String get arrived => localizedValues['arrived'][locale.languageCode];
String get er => localizedValues['er'][locale.languageCode];
String get walkIn => localizedValues['walkIn'][locale.languageCode];

@ -69,6 +69,7 @@ class _LoginFormState extends State<LoginForm> {
_isInit = false;
}
@override
Widget build(BuildContext context) {
final focusPass = FocusNode();
@ -99,8 +100,9 @@ class _LoginFormState extends State<LoginForm> {
userInfo.UserID = value.trim();
},
onFieldSubmitted: (_) {
FocusScope.of(context).requestFocus(focusPass);
FocusScope.of(context).nextFocus();
},
autofocus: false,
),
buildSizedBox(),
TextFormField(
@ -119,7 +121,7 @@ class _LoginFormState extends State<LoginForm> {
userInfo.Password = value;
},
onFieldSubmitted: (_) {
FocusScope.of(context).requestFocus(focusProject);
FocusScope.of(context).nextFocus();
helpers.showCupertinoPicker(
context, projectsList, 'Name', onSelectProject);
},
@ -144,22 +146,8 @@ class _LoginFormState extends State<LoginForm> {
}),
buildSizedBox(),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Checkbox(
value: true,
activeColor: Theme.of(context).primaryColor,
onChanged: (bool newValue) {}),
Text("Remember me",
style: TextStyle(
fontSize: 2 * SizeConfig.textMultiplier)),
],
),
),
RaisedButton(
onPressed: () {
login(context, authProv, widget.changeLoadingStata);
@ -204,17 +192,26 @@ class _LoginFormState extends State<LoginForm> {
*/
InputDecoration buildInputDecoration(BuildContext context, hint, asset) {
return InputDecoration(
prefixIcon: Image.asset(asset),
hintText: hint,
hintStyle: TextStyle(fontSize: 2 * SizeConfig.textMultiplier),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(20)),
borderSide: BorderSide(color: Hexcolor('#CCCCCC')),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
borderSide: BorderSide(color: Theme.of(context).primaryColor),
));
prefixIcon: Image.asset(asset),
hintText: hint,
hintStyle: TextStyle(fontSize: 2 * SizeConfig.textMultiplier),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(20)),
borderSide: BorderSide(color: Hexcolor('#CCCCCC')),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
borderSide: BorderSide(color: Theme.of(context).primaryColor),
),
errorBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
borderSide: BorderSide(color: Theme.of(context).errorColor),
),
focusedErrorBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
borderSide: BorderSide(color: Theme.of(context).errorColor),
),
);
}
SizedBox buildSizedBox() {
@ -224,6 +221,11 @@ class _LoginFormState extends State<LoginForm> {
}
login(context, AuthProvider authProv, Function changeLoadingStata) {
FocusScopeNode currentFocus = FocusScope.of(context);
// if (!currentFocus.hasPrimaryFocus) {
// currentFocus.unfocus();
// }
changeLoadingStata(true);
if (loginFormKey.currentState.validate()) {
loginFormKey.currentState.save();
@ -237,7 +239,7 @@ class _LoginFormState extends State<LoginForm> {
sharedPref.setString(TOKEN, res['LogInTokenID']);
print("token" + res['LogInTokenID']);
Navigator.of(context).pushNamed(VERIFICATION_METHODS);
Navigator.of(context).pushReplacementNamed(VERIFICATION_METHODS);
} else {
// handel error
// widget.showCenterShortLoadingToast("watting");
@ -247,7 +249,7 @@ class _LoginFormState extends State<LoginForm> {
}).catchError((err) {
print('$err');
changeLoadingStata(false);
helpers.showErrorToast();
helpers.showErrorToast(err);
});
} else {
changeLoadingStata(false);
@ -295,7 +297,7 @@ class _LoginFormState extends State<LoginForm> {
// Platform messages may fail, so we use a try/catch PlatformException.
try {
platformImei =
await ImeiPlugin.getImei(shouldShowRequestPermissionRationale: false);
await ImeiPlugin.getImei(shouldShowRequestPermissionRationale: false);
idunique = await ImeiPlugin.getId();
} on PlatformException {
platformImei = 'Failed to get platform version.';

@ -191,20 +191,13 @@ class _VerifyAccountState extends State<VerifyAccount> {
validator: validateCodeDigit))
],
),
// buildSizedBox(40),
buildSizedBox(20),
buildText(),
// buildSizedBox(10.0),
// Text()
buildSizedBox(40),
// buildSizedBox(),
RaisedButton(
onPressed: () {
verifyAccount(
authProv, widget.changeLoadingStata);
// Navigator.of(context).pushNamed(HOME);
},
elevation: 0.0,
child: Container(
@ -264,16 +257,25 @@ class _VerifyAccountState extends State<VerifyAccount> {
*/
InputDecoration buildInputDecoration(BuildContext context) {
return InputDecoration(
// ts/images/password_icon.png
contentPadding: EdgeInsets.only(top: 30, bottom: 30),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10)),
borderSide: BorderSide(color: Colors.black),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
borderSide: BorderSide(color: Theme.of(context).primaryColor),
));
// ts/images/password_icon.png
contentPadding: EdgeInsets.only(top: 30, bottom: 30),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10)),
borderSide: BorderSide(color: Colors.black),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
borderSide: BorderSide(color: Theme.of(context).primaryColor),
),
errorBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
borderSide: BorderSide(color: Theme.of(context).errorColor),
),
focusedErrorBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
borderSide: BorderSide(color: Theme.of(context).errorColor),
),
);
}
/*
@ -284,6 +286,16 @@ class _VerifyAccountState extends State<VerifyAccount> {
*@desc: buildText
*/
RichText buildText() {
String medthodName;
switch (model['OTP_SendType']) {
case 1:
medthodName = 'SMS';
break;
case 2:
medthodName = 'WhatsApp';
break;
default:
}
var text = RichText(
text: new TextSpan(
style: new TextStyle(
@ -293,7 +305,7 @@ class _VerifyAccountState extends State<VerifyAccount> {
new TextSpan(
text: 'Login Code ',
style: TextStyle(fontWeight: FontWeight.w700)),
new TextSpan(text: 'By SMS, Please enter the code')
new TextSpan(text: 'By ${medthodName}, Please enter the code')
]));
return text;
}
@ -322,7 +334,7 @@ class _VerifyAccountState extends State<VerifyAccount> {
verifyAccountFormValue['digit4'];
print(activationCode);
int projectID = await sharedPref.getInt(PROJECT_ID);
Map<String,dynamic> model = {
Map<String, dynamic> model = {
"activationCode": activationCode,
"DoctorID": _loggedUser['DoctorID'],
"LogInTokenID": _loggedUser['LogInTokenID'],
@ -381,7 +393,7 @@ class _VerifyAccountState extends State<VerifyAccount> {
Map<String, dynamic> profile, Function changeLoadingStata) {
changeLoadingStata(false);
sharedPref.setObj(DOCTOR_PROFILE, profile);
Navigator.of(context).pushNamed(HOME);
Navigator.of(context).pushReplacementNamed(HOME);
}
Future<dynamic> _asyncSimpleDialog(

@ -50,7 +50,7 @@ class _VerificationMethodsState extends State<VerificationMethods> {
super.didChangeDependencies();
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
verificationMethod =
routeArgs != null ? routeArgs['verificationMethod'] : null;
routeArgs != null ? routeArgs['verificationMethod'] : null;
}
@override
@ -101,17 +101,17 @@ class _VerificationMethodsState extends State<VerificationMethods> {
child: buildFingerprintMethod(
context, authProv),
replacement:
buildWhatsAppMethod(context, authProv),
buildWhatsAppMethod(context, authProv),
),
Visibility(
visible: hideSilentMethods() ? false : true,
child: buildFaceIDMethod(context, authProv),
replacement:
buildSMSMethod(context, authProv),
buildSMSMethod(context, authProv),
),
Visibility(
visible:
hideSilentMethods() ? false : true,
hideSilentMethods() ? false : true,
child: buildWhatsAppMethod(
context, authProv)),
Visibility(
@ -126,8 +126,8 @@ class _VerificationMethodsState extends State<VerificationMethods> {
// height: 500,
),
SizedBox(
// height: 20,
)
// height: 20,
)
],
),
);
@ -136,7 +136,7 @@ class _VerificationMethodsState extends State<VerificationMethods> {
});
}
/*
/*
*@author: Elham Rababah
*@Date:28/5/2020
*@param: BuildContext context, AuthProvider authProv
@ -149,7 +149,7 @@ class _VerificationMethodsState extends State<VerificationMethods> {
sendActivationCodeByOtpNotificationType(1, authProv);
});
}
/*
/*
*@author: Elham Rababah
*@Date:28/5/2020
*@param: BuildContext context, AuthProvider authProv
@ -159,9 +159,9 @@ class _VerificationMethodsState extends State<VerificationMethods> {
Center buildWhatsAppMethod(BuildContext context, AuthProvider authProv) {
return buildVerificationMethod(
context, 'assets/images/verification_whatsapp_icon.png', 'WhatsApp',
() {
sendActivationCodeByOtpNotificationType(2, authProv);
});
() {
sendActivationCodeByOtpNotificationType(2, authProv);
});
}
/*
*@author: Elham Rababah
@ -186,8 +186,8 @@ class _VerificationMethodsState extends State<VerificationMethods> {
Center buildFingerprintMethod(BuildContext context, AuthProvider authProv) {
return buildVerificationMethod(context,
'assets/images/verification_fingerprint_icon.png', 'Fingerprint', () {
sendActivationCodeByOtpNotificationType(4, authProv);
});
sendActivationCodeByOtpNotificationType(4, authProv);
});
}
/*
@ -212,7 +212,7 @@ class _VerificationMethodsState extends State<VerificationMethods> {
width: 1,
color: Hexcolor(
'#CCCCCC') // <--- border width here
),
),
borderRadius: BorderRadius.all(Radius.circular(10))),
child: Column(
children: <Widget>[
@ -251,6 +251,7 @@ class _VerificationMethodsState extends State<VerificationMethods> {
*@desc: send Activation Code By Otp Notification Type
*/
sendActivationCodeByOtpNotificationType(oTPSendType, AuthProvider authProv) {
// TODO : build enum for verfication method
if (oTPSendType == 1 || oTPSendType == 2) {
widget.changeLoadingStata(true);
@ -270,7 +271,7 @@ class _VerificationMethodsState extends State<VerificationMethods> {
widget.changeLoadingStata(false);
if (res['MessageStatus'] == 1) {
Navigator.of(context).pushNamed(VERIFY_ACCOUNT, arguments: {'model':model});
Navigator.of(context).pushReplacementNamed(VERIFY_ACCOUNT, arguments: {'model':model});
} else {
print(res['ErrorEndUserMessage']);
helpers.showErrorToast(res['ErrorEndUserMessage']);

@ -1,11 +1,14 @@
import 'dart:ffi';
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:flutter_svg/svg.dart';
import '../shared/rounded_container_widget.dart';
import 'package:flutter/material.dart';
import '../shared/app_texts_widget.dart';
class DashboardItemIconText extends StatefulWidget {
final IconData icon;
final String icon;
final String value;
final String label;
final Color backgroundColor;
@ -43,16 +46,16 @@ class _DashboardItemTextsState extends State<DashboardItemIconText> {
Align(
alignment: FractionalOffset.topLeft,
child: Container(
margin: EdgeInsets.all(10),
child: Icon(
widget.icon,
color: widget.iconColor,
),
)),
padding: EdgeInsets.all(10),
child: SvgPicture.asset(
widget.icon,
color: widget.iconColor,
width: SizeConfig.widthMultiplier * 7,
))),
Align(
alignment: FractionalOffset.bottomRight,
child: Container(
margin: EdgeInsets.all(10),
padding: EdgeInsets.all(10),
child: Column(
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.end,

@ -1,5 +1,6 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/models/list_gt_my_pationents_question_model.dart';
import 'package:doctor_app_flutter/presentation/doctor_app_icons.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart';
@ -42,7 +43,28 @@ class _DoctorReplyWidgetState extends State<DoctorReplyWidget> {
child: Row(
children: <Widget>[
SizedBox(width: 5,),
LargeAvatar(name: widget.reply.patientName,url: '',),
//LargeAvatar(icon: widget.reply.gender == 0 ? DoctorApp.male : DoctorApp.femaleicon ,),
Container(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment(-1, -1),
end: Alignment(1, 1),
colors: [
Colors.grey[100],
Colors.grey[200],
]),
boxShadow: [
BoxShadow(
color: Color.fromRGBO(0, 0, 0, 0.08),
offset: Offset(0.0, 5.0),
blurRadius: 16.0)
],
borderRadius: BorderRadius.all(Radius.circular(50.0)),
),
width: 80,
height: 80,
child: Icon(widget.reply.gender == 1 ? DoctorApp.male : DoctorApp.femaleicon,size: 80,)),
SizedBox(width: 15,),
Expanded(
child: Container(

@ -42,269 +42,277 @@ class _MyReferralPatientWidgetState extends State<MyReferralPatientWidget> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
AppText(
'${widget.myReferralPatientModel.firstName} ${widget.myReferralPatientModel.lastName}',
fontSize: 2.5 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
InkWell(
onTap: () {
setState(() {
_showDetails = !_showDetails;
});
},
child: Icon(_showDetails
? Icons.keyboard_arrow_up
: Icons.keyboard_arrow_down)),
],
InkWell(
onTap: () {
setState(() {
_showDetails = !_showDetails;
});
},
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
AppText(
'${widget.myReferralPatientModel.firstName} ${widget.myReferralPatientModel.lastName}',
fontSize: 2.5 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
Icon(_showDetails
? Icons.keyboard_arrow_up
: Icons.keyboard_arrow_down),
],
),
),
!_showDetails
? Container()
: AnimatedContainer(
duration: Duration(milliseconds: 200),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SizedBox(height: 5,),
Divider(color: Color(0xFF000000),height: 0.5,),
Table(
border: TableBorder.symmetric(inside: BorderSide(width: 0.5),),
duration: Duration(milliseconds: 200),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SizedBox(height: 5,),
Divider(color: Color(0xFF000000),height: 0.5,),
Table(
border: TableBorder.symmetric(inside: BorderSide(width: 0.5),),
children: [
TableRow(
children: [
TableRow(
children: [
Container(
margin: EdgeInsets.all(2.5),
padding: EdgeInsets.all(5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
'File No',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
AppText(
'${widget.myReferralPatientModel.referringDoctor}',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
)
],
Container(
margin: EdgeInsets.all(2.5),
padding: EdgeInsets.all(5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
'File No',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
),
Container(
margin: EdgeInsets.only(left: 4,top: 2.5,right: 2.5,bottom: 2.5),
padding: EdgeInsets.all(5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
'Referring Doctor',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
AppText(
widget.myReferralPatientModel
.referringClinicDescription,
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
)
],
SizedBox(height: 5,),
AppText(
'${widget.myReferralPatientModel.referringDoctor}',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
)
],
),
),
Container(
margin: EdgeInsets.only(left: 4,top: 2.5,right: 2.5,bottom: 2.5),
padding: EdgeInsets.all(5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
'Referring Doctor',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
),
]
SizedBox(height: 5,),
AppText(
widget.myReferralPatientModel
.referringClinicDescription,
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
)
],
),
),
TableRow(
children: [
Container(
margin: EdgeInsets.all(2.5),
padding: EdgeInsets.all(5),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'Referring Clinic',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
AppText(
'${widget.myReferralPatientModel.referringClinicDescription}',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
)
],
),
]
),
TableRow(
children: [
Container(
margin: EdgeInsets.all(2.5),
padding: EdgeInsets.all(5),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'Referring Clinic',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
Container(
margin: EdgeInsets.only(left: 4,top: 2.5,right: 2.5,bottom: 2.5),
padding: EdgeInsets.all(5),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'Frequency',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
AppText(
widget.myReferralPatientModel
.frequencyDescription,
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
)
],
),
SizedBox(height: 5,),
AppText(
'${widget.myReferralPatientModel.referringClinicDescription}',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
)
]
],
),
),
TableRow(
children: [
Container(
margin: EdgeInsets.all(2.5),
padding: EdgeInsets.all(5),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'Priority',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
AppText(
'${widget.myReferralPatientModel.priorityDescription}',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
)
],
Container(
margin: EdgeInsets.only(left: 4,top: 2.5,right: 2.5,bottom: 2.5),
padding: EdgeInsets.all(5),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'Frequency',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
SizedBox(height: 5,),
AppText(
widget.myReferralPatientModel
.frequencyDescription,
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
)
],
),
)
]
),
TableRow(
children: [
Container(
margin: EdgeInsets.all(2.5),
padding: EdgeInsets.all(5),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'Priority',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
Container(
margin: EdgeInsets.only(left: 4,top: 2.5,right: 2.5,bottom: 2.5),
padding: EdgeInsets.all(5),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'Max Response Time',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
AppText(
Helpers.getDateFormatted(widget
.myReferralPatientModel
.mAXResponseTime),
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
)
],
),
SizedBox(height: 5,),
AppText(
'${widget.myReferralPatientModel.priorityDescription}',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
)
],
),
),
Container(
margin: EdgeInsets.only(left: 4,top: 2.5,right: 2.5,bottom: 2.5),
padding: EdgeInsets.all(5),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'Max Response Time',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
SizedBox(height: 5,),
AppText(
Helpers.getDateFormatted(widget
.myReferralPatientModel
.mAXResponseTime),
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
)
],
),
)
],
),
],
),
Divider(color: Color(0xFF000000),height: 0.5,),
SizedBox(
height: 5,
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
'Clinic Details and Remarks',
fontSize: 1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
textAlign: TextAlign.start,),
Texts(
'${widget.myReferralPatientModel.referringDoctorRemarks}',
style: "bodyText1",
readMore: true,
textAlign: TextAlign.start,
maxLength: 100)
],
),
SizedBox(
height: 5,
),
AppText(
'Answer/Suggestions',
fontSize: 1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
],
),
Divider(color: Color(0xFF000000),height: 0.5,),
SizedBox(
height: 5,
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
'Clinic Details and Remarks',
fontSize: 1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
textAlign: TextAlign.start,),
Texts(
'${widget.myReferralPatientModel.referringDoctorRemarks}',
style: "bodyText1",
readMore: true,
textAlign: TextAlign.start,
),
SizedBox(
height: 5,
),
Form(
key: _formKey,
child: TextFields(
maxLines: 2,
minLines: 2,
hintText: 'Answer the patient',
fontWeight: FontWeight.normal,
initialValue: widget.myReferralPatientModel.referredDoctorRemarks ?? '',
readOnly: _isLoading,
validator: (value) {
if (value.isEmpty)
return "please enter answer";
else
return null;
},
),
),
SizedBox(height: 10.0),
SizedBox(height: 10.0),
Container(
width: double.infinity,
margin: EdgeInsets.only(left: 10,right: 10),
child: Button(
onTap: () async {
final form = _formKey.currentState;
if (form.validate()) {
setState(() {
_isLoading = true;
});
try {
await Provider.of<MyReferralPatientProvider>(context, listen: false).replay(answerController.text.toString(), widget.myReferralPatientModel);
setState(() {
_isLoading = false;
});
DrAppToastMsg.showSuccesToast('Reply Successfully');
maxLength: 100)
],
),
SizedBox(
height: 5,
),
AppText(
'Answer/Suggestions',
fontSize: 1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
textAlign: TextAlign.start,
),
SizedBox(
height: 5,
),
Form(
key: _formKey,
child: TextFields(
maxLines: 2,
minLines: 2,
hintText: 'Answer the patient',
fontWeight: FontWeight.normal,
initialValue: widget.myReferralPatientModel.referredDoctorRemarks ?? '',
readOnly: _isLoading,
validator: (value) {
if (value.isEmpty)
return "please enter answer";
else
return null;
},
),
),
SizedBox(height: 10.0),
SizedBox(height: 10.0),
Container(
width: double.infinity,
margin: EdgeInsets.only(left: 10,right: 10),
child: Button(
onTap: () async {
final form = _formKey.currentState;
if (form.validate()) {
setState(() {
_isLoading = true;
});
try {
await Provider.of<MyReferralPatientProvider>(context, listen: false).replay(answerController.text.toString(), widget.myReferralPatientModel);
setState(() {
_isLoading = false;
});
DrAppToastMsg.showSuccesToast('Reply Successfully');
} catch (e) {
setState(() {
_isLoading = false;
});
DrAppToastMsg.showErrorToast(e);
}
}
},
title: 'Reply',
loading: _isLoading,
),
)
],
} catch (e) {
setState(() {
_isLoading = false;
});
DrAppToastMsg.showErrorToast(e);
}
}
},
title: 'Reply',
loading: _isLoading,
),
)
],
),
)
],
),
),

@ -45,6 +45,7 @@ class MyScheduleWidget extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText('From',fontSize: 2.2 * SizeConfig.textMultiplier,fontWeight: FontWeight.bold,),
SizedBox(height: 5,),
AppText(work.from,fontSize: 2.2 * SizeConfig.textMultiplier,fontWeight: FontWeight.w300,)
],
),
@ -56,6 +57,7 @@ class MyScheduleWidget extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText('To',fontSize: 2.2 * SizeConfig.textMultiplier,fontWeight: FontWeight.bold,),
SizedBox(height: 5,),
AppText(work.to,fontSize: 2.2 * SizeConfig.textMultiplier,fontWeight: FontWeight.w300,)
],
),

@ -6,7 +6,7 @@ class HomeItem extends StatelessWidget {
final String image;
final String link;
HomeItem(this.id, this.title, this.image,this.link);
HomeItem(this.id, this.title, this.image, this.link);
@override
Widget build(BuildContext context) {
return InkWell(
@ -22,21 +22,21 @@ class HomeItem extends StatelessWidget {
child: Column(
children: <Widget>[
Container(
// decoration: BoxDecoration(color:Colors.red),
width: 10000,
height: 60,
// decoration: BoxDecoration(color:Colors.red),
width: 10000,
height: 60,
child: CircleAvatar(
backgroundColor: Colors.white,
child: Container(
child: Image.asset(
image,
// width 50,
scale: 0.6,
color: Theme.of(context).primaryColor,
fit: BoxFit.cover,
),
),
)),
backgroundColor: Colors.white,
child: Container(
child: Image.asset(
image,
// width 50,
scale: 0.6,
color: Theme.of(context).primaryColor,
fit: BoxFit.cover,
),
),
)),
Text(
title,
style: TextStyle(fontSize: 16),

@ -1,10 +1,6 @@
import 'dart:convert';
import 'dart:typed_data';
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/widgets/shared/profile_image_widget.dart';
import '../shared/rounded_container_widget.dart';
import '../shared/app_texts_widget.dart';
import 'package:flutter/material.dart';
@ -18,58 +14,73 @@ import 'package:flutter/material.dart';
*/
class MedicineItemWidget extends StatefulWidget {
final String label;
final Color backgroundColor;
final bool showBorder;
final Color borderColor;
final String url;
final String label;
final Color backgroundColor;
final bool showBorder;
final Color borderColor;
final String url;
MedicineItemWidget({ @required this.label, this.backgroundColor = Colors.white, this.showBorder = false, this.borderColor = Colors.white, this.url});
MedicineItemWidget(
{@required this.label,
this.backgroundColor = Colors.white,
this.showBorder = false,
this.borderColor = Colors.white,
this.url});
@override
_MedicineItemWidgetState createState() => _MedicineItemWidgetState();
}
class _MedicineItemWidgetState extends State<MedicineItemWidget> {
@override
@override
Widget build(BuildContext context) {
return new RoundedContainer(
height: SizeConfig.heightMultiplier * 8,
child:Padding(
child: Padding(
padding: const EdgeInsets.all(5.0),
child: Row(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
if(widget.url != null) Container(
height: 39,
width: 39,
child: ClipRRect(
borderRadius:BorderRadius.all(Radius.circular(7)),
child: Image.memory(
dataFromBase64String(widget.url),
height: SizeConfig.imageSizeMultiplier * 15,
width: SizeConfig.imageSizeMultiplier * 15,
fit: BoxFit.cover,
),
),
if (widget.url != null)
Container(
height: 39,
width: 39,
child: ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(7)),
child: Image.memory(
dataFromBase64String(widget.url),
height: SizeConfig.imageSizeMultiplier * 15,
width: SizeConfig.imageSizeMultiplier * 15,
fit: BoxFit.cover,
),
),
),
Expanded(
child: Padding(
padding: EdgeInsets.all(5),
child: Align(
alignment: Alignment.centerLeft,
child: AppText(widget.label))))
],
),
Expanded(child: Padding( padding: EdgeInsets.all(5), child: Align( alignment: Alignment.centerLeft, child: AppText(widget.label))))
],),
),
backgroundColor: widget.backgroundColor, showBorder: widget.showBorder, borderColor: widget.borderColor, margin: 4, raduis: 10,);
backgroundColor: widget.backgroundColor,
showBorder: widget.showBorder,
borderColor: widget.borderColor,
margin: 4,
raduis: 10,
);
}
Image imageFromBase64String(String base64String) {
return Image.memory(base64Decode(base64String));
}
return Image.memory(base64Decode(base64String));
}
Uint8List dataFromBase64String(String base64String) {
return base64Decode(base64String);
}
Uint8List dataFromBase64String(String base64String) {
return base64Decode(base64String);
}
String base64String(Uint8List data) {
return base64Encode(data);
String base64String(Uint8List data) {
return base64Encode(data);
}
}
}

@ -50,7 +50,7 @@ class _DynamicElementsState extends State<DynamicElements> {
AppTextFormField(
textInputType: TextInputType.number,
hintText: 'From',
controller: _fromDateController, //_fromDateController,
controller: _fromDateController,
inputFormatter: ONLY_DATE,
onTap: () {
@ -83,7 +83,7 @@ class _DynamicElementsState extends State<DynamicElements> {
AppTextFormField(
textInputType: TextInputType.number,
hintText: 'TO',
controller: _fromDateController, //_toDateController,
controller: _toDateController,
onTap: () {
_presentDatePicker('_selectedToDate');
},

@ -54,6 +54,8 @@ class LargeAvatar extends StatelessWidget {
@override
Widget build(BuildContext context) {
var vlr = name;
var asd;
return InkWell(
onTap: disableProfileView
? null

@ -32,46 +32,60 @@ class PatientProfileWidget extends StatelessWidget {
// ProfileStatusInfoWidget()
// ]);
return Container(
child: Column(children: <Widget>[
Expanded(
flex: 1,
child:
Row(mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[
Column(children: <Widget>[
return CustomScrollView(primary: false, slivers: <Widget>[
SliverList(
delegate: SliverChildListDelegate(
[
Container(
padding: EdgeInsets.only(top: 20),
child: ProfileImageWidget(
url:
"https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png",
name: patient.firstName + ' ' + patient.lastName,
fontsize: 24.0,
color: Colors.black,
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Column(children: <Widget>[
Container(
padding: EdgeInsets.only(top: 20),
child: ProfileImageWidget(
url:
"https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png",
name: patient.firstName + ' ' + patient.lastName,
fontsize: 24.0,
color: Colors.black,
),
),
Container(
child: Column(
children: <Widget>[
AppText(
'File No: ' + patient.patientId.toString(),
fontWeight: FontWeight.normal,
fontSize: 16,
),
AppText(
patient.genderDescription.toString() +
', ' +
patient.age,
fontWeight: FontWeight.normal,
fontSize: 16,
)
],
),
)
]),
]),
),
Container(
child: Column(
children: <Widget>[
AppText(
'File No: ' + patient.patientId.toString(),
fontWeight: FontWeight.normal,
fontSize: 16,
),
AppText(
patient.genderDescription.toString() + ', ' + patient.age,
fontWeight: FontWeight.normal,
fontSize: 16,
)
],
),
)
]),
]),
],
),
),
Expanded(
flex: 2,
child: ProfileMedicalInfoWidget(patient: patient),
)
]));
SliverPadding(
padding: const EdgeInsets.fromLTRB(20, 30, 15, 10),
sliver: ProfileMedicalInfoWidget(patient: patient,))
]);
// Container(
// child: Column(children: <Widget>[
// Expanded(
// flex: 2,
// child: ,
// )
// ]));
}
}

@ -23,65 +23,69 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
Widget build(BuildContext context) {
// final double contWidth = SizeConfig.realScreenWidth * 0.70;
// final double contHeight = SizeConfig.screenHeight * 0.30;
return CustomScrollView(primary: false, slivers: <Widget>[
SliverPadding(
padding: const EdgeInsets.fromLTRB(20, 30, 15, 10),
sliver: SliverGrid.count(
crossAxisSpacing: 10,
mainAxisSpacing: 20,
crossAxisCount: 2,
childAspectRatio: 1.5,
children: [
PatientProfileButton(
key: key,
patient: patient,
name: 'Vital Sign',
route: VITAL_SIGN_DETAILS,
icon: 'heartbeat.png'),
PatientProfileButton(
key: key,
patient: patient,
route: LAB_ORDERS,
name: 'Lab Order',
icon: 'lab.png'),
PatientProfileButton(
key: key,
patient: patient,
route: PRESCRIPTIONS,
name: 'Prescription',
icon: 'note.png'),
PatientProfileButton(
key: key,
patient: patient,
route: RADIOLOGY,
name: 'Radiology',
icon: 'radiology-1.png'),
PatientProfileButton(
key: key,
patient: patient,
route: PROGRESS_NOTE,
name: 'Progress Notes',
icon: 'heartbeat.png'),
PatientProfileButton(
key: key,
patient: patient,
route: PATIENT_INSURANCE_APPROVALS,
name: 'Insurance Aprovals',
icon: 'lab.png'),
PatientProfileButton(
key: key,
patient: patient,
route: REFER_PATIENT,
name: 'Refer Patient',
icon: 'note.png'),
PatientProfileButton(
key: key,
patient: patient,
route: PATIENT_ORDERS,
name: 'Orders',
icon: 'radiology-1.png'),
]))
]);
return SliverGrid.count(
crossAxisSpacing: 10,
mainAxisSpacing: 20,
crossAxisCount: 2,
childAspectRatio: 1.5,
children: [
PatientProfileButton(
key: key,
patient: patient,
name: 'Vital Sign',
route: VITAL_SIGN_DETAILS,
icon: 'heartbeat.png'),
PatientProfileButton(
key: key,
patient: patient,
route: LAB_ORDERS,
name: 'Lab Order',
icon: 'lab.png'),
PatientProfileButton(
key: key,
patient: patient,
route: PRESCRIPTIONS,
name: 'Prescription',
icon: 'note.png'),
PatientProfileButton(
key: key,
patient: patient,
route: RADIOLOGY,
name: 'Radiology',
icon: 'radiology-1.png'),
Visibility(
visible: selectedPatientType != 0 && selectedPatientType != 5,
child: PatientProfileButton(
key: key,
patient: patient,
route: PROGRESS_NOTE,
name: 'Progress Notes',
icon: 'heartbeat.png')),
PatientProfileButton(
key: key,
patient: patient,
route: PATIENT_INSURANCE_APPROVALS,
name: 'Insurance Aprovals',
icon: 'lab.png'),
Visibility(
visible: selectedPatientType != 0 &&
selectedPatientType != 5 &&
selectedPatientType != 2,
child: PatientProfileButton(
key: key,
patient: patient,
route: REFER_PATIENT,
name: 'Refer Patient',
icon: 'note.png')),
Visibility(
visible: selectedPatientType != 0 && selectedPatientType != 5,
child: PatientProfileButton(
key: key,
patient: patient,
route: PATIENT_ORDERS,
name: 'Orders',
icon: 'radiology-1.png')),
]);
// child: ListView(
// children: <Widget>[
// Padding(
@ -287,26 +291,18 @@ class PatientProfileButton extends StatelessWidget {
navigator(context, this.route);
},
child: Column(children: <Widget>[
Expanded(
flex: 1,
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
padding: EdgeInsets.all(5),
child: new AppText(
this.name,
color: Colors.red,
fontWeight: FontWeight.w600,
textAlign: TextAlign.left,
fontSize: 16,
),
)
],
Container(
alignment: Alignment.topLeft,
padding: EdgeInsets.all(5),
child: new AppText(
this.name,
color: Colors.red,
fontWeight: FontWeight.w600,
textAlign: TextAlign.left,
fontSize: SizeConfig.textMultiplier * 2,
),
),
Expanded(
flex: 1,
Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[

@ -89,35 +89,24 @@ class _AppDrawerState extends State<AppDrawer> {
},
),
),
InkWell(
child: DrawerItem("My Schedule", Icons.table_chart),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ChangeNotifierProvider(
create: (_) => ScheduleProvider(),
child: MyScheduleScreen(),
),
),
);
},
),
InkWell(
child: DrawerItem("Settings", Icons.settings),
onTap: () {
Navigator.pop(context);
Navigator.of(context).pushNamed(SETTINGS);
},
),
InkWell(
child: DrawerItem("QR Reader", Icons.search),
onTap: () {
Navigator.pop(context);
Navigator.of(context).pushNamed(QR_READER);
},
),
InkWell(
child: DrawerItem("lOGOUT", Icons.exit_to_app),
onTap: () {
Navigator.pop(context);
Navigator.of(context).pushNamed(LOGIN);
},
),

@ -30,6 +30,7 @@ class AppExpandableNotifier extends StatelessWidget {
padding: EdgeInsets.all(10),
child: Text(
"See Graph Details",
style: TextStyle(fontWeight: FontWeight.bold),
)),
collapsed: Text(''),
expanded: bodyWid,

@ -1,13 +1,8 @@
import 'package:doctor_app_flutter/routes.dart';
import 'package:doctor_app_flutter/widgets/shared/profile_image_widget.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import '../../config/size_config.dart';
import '../../presentation/doctor_app_icons.dart';
import '../../widgets/shared/app_drawer_widget.dart';
import '../../widgets/shared/app_loader_widget.dart';
import '../../widgets/shared/custom_shape_clipper.dart';
class AppScaffold extends StatelessWidget {
String appBarTitle;
@ -37,12 +32,11 @@ class AppScaffold extends StatelessWidget {
}),
centerTitle: true,
actions: <Widget>[
ProfileImageWidget(
height: 50,
width: 50,
url:
"https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png",
)
IconButton(
icon: Icon(DoctorApp.home_icon_active),
color: Colors.white, //Colors.black,
onPressed: () => Navigator.pushReplacementNamed(context, HOME),
),
],
)
: null,

@ -33,8 +33,7 @@ class AppText extends StatefulWidget {
this.marginLeft = 0,
this.visibility = true,
this.textAlign,
this.backGroundcolor=Colors.white
});
this.backGroundcolor = Colors.white});
@override
_AppTextState createState() => _AppTextState();
@ -56,13 +55,15 @@ class _AppTextState extends State<AppText> {
child: Text(
widget.data,
textAlign: widget.textAlign,
overflow: TextOverflow.clip,
style: TextStyle(
color: widget.color,
fontWeight: widget.fontWeight,
fontSize: widget.fontSize ?? (SizeConfig.textMultiplier * 2),
fontFamily: widget.fontFamily,
// backgroundColor:widget.backGroundcolor
),
color: widget.color,
fontWeight: widget.fontWeight,
fontSize: widget.fontSize ?? (SizeConfig.textMultiplier * 2),
fontFamily: widget.fontFamily,
// backgroundColor:widget.backGroundcolor
),
),
),
);

@ -1,5 +1,7 @@
import 'package:flutter/material.dart';
import '../app_texts_widget.dart';
/*
*@author: Elham Rababah
*@Date:12/5/2020
@ -18,10 +20,11 @@ class DrAppEmbeddedError extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: Text(
child: AppText(
error,
style: TextStyle(color: Theme.of(context).errorColor),
color: Theme.of(context).errorColor,
textAlign: TextAlign.center,
margin: 10,
),
);
}

@ -23,7 +23,7 @@ dependencies:
flutter_localizations:
sdk: flutter
flutter_device_type: ^0.2.0
intl: ^0.16.1
intl: ^0.16.0
http: ^0.12.0+4
provider: ^4.0.5+1
shared_preferences: ^0.5.6+3
@ -39,15 +39,12 @@ dependencies:
eva_icons_flutter: ^2.0.0
expandable: ^4.1.4
# Qr code Scanner
barcode_scan: ^3.0.1
# permissions
permission_handler: ^5.0.0+hotfix.3
device_info: ^0.4.2+4
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
@ -61,23 +58,20 @@ dev_dependencies:
build_runner: any
build_web_compilers: any
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
# The following section is specific to Flutter.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
# To add assets to your application, add an assets section, like this:
assets:
- assets/images/
- assets/images/
- assets/images/dashboard_icon/
# - images/a_dot_ham.jpeg
# An image asset can refer to one or more resolution-specific "variants", see
@ -97,14 +91,14 @@ flutter:
- asset: assets/fonts/Work_Sans/WorkSans-Regular.ttf
- asset: assets/fonts/Work_Sans/WorkSans-Bold.ttf
weight: 700
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
- family: DoctorApp
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
- family: DoctorApp
fonts:
- asset: fonts/DoctorApp.ttf
- asset: fonts/DoctorApp.ttf
#
# For details regarding fonts from package dependencies,
# see https://flutter.dev/custom-fonts/#from-packages

@ -0,0 +1,8 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABDdAHzw+C
qTVdRkviTeVAj7AAAAEAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIGnX/M1OFtZvGTEI
h5/B9u+eQwjzRJpanfljungMbc+VAAAAkPGJXHVNFeKLXK+aQFiTKx8EU48dQGLBQVIq4G
1SOgNvOaK2UfnQwSbZzhMAOmA1RCUbpQH9cGr9B/uSI88sdghcTEkNgVAtVF/NHNeKMahf
3hdVQ7ER6Au4FEIhpvUTzF+0G+8QBTabpNQx3UdLUxFAOulX6nIYG2phQIS08V/DdS70IG
luo6vY2w/qnXDsWQ==
-----END OPENSSH PRIVATE KEY-----

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGnX/M1OFtZvGTEIh5/B9u+eQwjzRJpanfljungMbc+V sultan
Loading…
Cancel
Save