<mxfile host="app.diagrams.net" modified="2026-02-26T20:58:00.000Z" agent="OpenCode" version="24.7.17" type="device">
  <diagram id="fig4-1-customer" name="图4.1 顾客功能结构图">
    <mxGraphModel dx="1500" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2200" pageHeight="1400" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />

        <mxCell id="10" value="顾客功能结构" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=2;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="980" y="40" width="220" height="60" as="geometry" /></mxCell>

        <mxCell id="20" value="账户与安全" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="130" y="180" width="180" height="50" as="geometry" /></mxCell>
        <mxCell id="21" value="注册登录" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="40" y="290" width="160" height="44" as="geometry" /></mxCell>
        <mxCell id="22" value="修改密码" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="220" y="290" width="160" height="44" as="geometry" /></mxCell>
        <mxCell id="23" value="登录认证" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="20" y="390" width="120" height="40" as="geometry" /></mxCell>
        <mxCell id="24" value="身份保持" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="140" y="390" width="120" height="40" as="geometry" /></mxCell>
        <mxCell id="25" value="密码校验" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="260" y="390" width="120" height="40" as="geometry" /></mxCell>

        <mxCell id="30" value="个人中心" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="430" y="180" width="180" height="50" as="geometry" /></mxCell>
        <mxCell id="31" value="查看个人信息" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="340" y="290" width="160" height="44" as="geometry" /></mxCell>
        <mxCell id="32" value="修改个人信息" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="520" y="290" width="160" height="44" as="geometry" /></mxCell>
        <mxCell id="33" value="联系方式维护" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="360" y="390" width="140" height="40" as="geometry" /></mxCell>
        <mxCell id="34" value="头像信息维护" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="520" y="390" width="140" height="40" as="geometry" /></mxCell>

        <mxCell id="40" value="宠物档案管理" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="730" y="180" width="180" height="50" as="geometry" /></mxCell>
        <mxCell id="41" value="新增宠物档案" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="640" y="290" width="160" height="44" as="geometry" /></mxCell>
        <mxCell id="42" value="编辑宠物档案" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="820" y="290" width="160" height="44" as="geometry" /></mxCell>
        <mxCell id="43" value="删除宠物档案" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1000" y="290" width="160" height="44" as="geometry" /></mxCell>
        <mxCell id="44" value="基础信息录入" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="640" y="390" width="160" height="40" as="geometry" /></mxCell>
        <mxCell id="45" value="健康备注维护" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="820" y="390" width="160" height="40" as="geometry" /></mxCell>

        <mxCell id="50" value="预约管理" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1130" y="180" width="180" height="50" as="geometry" /></mxCell>
        <mxCell id="51" value="提交预约" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1040" y="290" width="150" height="44" as="geometry" /></mxCell>
        <mxCell id="52" value="取消预约" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1200" y="290" width="150" height="44" as="geometry" /></mxCell>
        <mxCell id="53" value="查询预约记录" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1360" y="290" width="150" height="44" as="geometry" /></mxCell>
        <mxCell id="54" value="选择宠物与时段" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1040" y="390" width="150" height="40" as="geometry" /></mxCell>
        <mxCell id="55" value="状态跟踪" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1200" y="390" width="150" height="40" as="geometry" /></mxCell>
        <mxCell id="56" value="取消确认" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1360" y="390" width="150" height="40" as="geometry" /></mxCell>

        <mxCell id="60" value="订单与报告" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1530" y="180" width="180" height="50" as="geometry" /></mxCell>
        <mxCell id="61" value="查看订单" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1460" y="290" width="140" height="44" as="geometry" /></mxCell>
        <mxCell id="62" value="查询报告" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1610" y="290" width="140" height="44" as="geometry" /></mxCell>
        <mxCell id="63" value="订单详情查看" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1460" y="390" width="140" height="40" as="geometry" /></mxCell>
        <mxCell id="64" value="报告内容浏览" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1610" y="390" width="140" height="40" as="geometry" /></mxCell>

        <mxCell id="70" value="公告与消息" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1880" y="180" width="180" height="50" as="geometry" /></mxCell>
        <mxCell id="71" value="查看公告" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1810" y="290" width="140" height="44" as="geometry" /></mxCell>
        <mxCell id="72" value="留言反馈" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1960" y="290" width="140" height="44" as="geometry" /></mxCell>

        <mxCell id="e100" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="10" target="20"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e101" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="10" target="30"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e102" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="10" target="40"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e103" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="10" target="50"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e104" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="10" target="60"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e105" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="10" target="70"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="e110" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="20" target="21"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e111" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="20" target="22"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e112" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="21" target="23"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e113" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="21" target="24"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e114" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="22" target="25"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="e120" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="30" target="31"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e121" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="30" target="32"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e122" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="32" target="33"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e123" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="32" target="34"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="e130" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="40" target="41"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e131" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="40" target="42"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e132" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="40" target="43"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e133" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="41" target="44"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e134" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="42" target="45"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="e140" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="50" target="51"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e141" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="50" target="52"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e142" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="50" target="53"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e143" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="51" target="54"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e144" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="53" target="55"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e145" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="52" target="56"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="e150" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="60" target="61"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e151" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="60" target="62"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e152" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="61" target="63"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e153" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="62" target="64"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="e160" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="70" target="71"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e161" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="70" target="72"><mxGeometry relative="1" as="geometry" /></mxCell>
      </root>
    </mxGraphModel>
  </diagram>

  <diagram id="fig4-2-doctor" name="图4.2 医生功能结构图">
    <mxGraphModel dx="1500" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2200" pageHeight="1400" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />

        <mxCell id="10" value="医生功能结构" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=2;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="980" y="40" width="220" height="60" as="geometry" /></mxCell>

        <mxCell id="20" value="接诊工作台" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="180" y="180" width="190" height="50" as="geometry" /></mxCell>
        <mxCell id="21" value="查看预约" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="90" y="290" width="160" height="44" as="geometry" /></mxCell>
        <mxCell id="22" value="接诊确认" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="270" y="290" width="160" height="44" as="geometry" /></mxCell>
        <mxCell id="23" value="创建就诊记录" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="160" y="390" width="180" height="40" as="geometry" /></mxCell>

        <mxCell id="30" value="病历管理" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="520" y="180" width="190" height="50" as="geometry" /></mxCell>
        <mxCell id="31" value="编辑病历" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="430" y="290" width="160" height="44" as="geometry" /></mxCell>
        <mxCell id="32" value="查询历史病历" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="610" y="290" width="160" height="44" as="geometry" /></mxCell>
        <mxCell id="33" value="主诉录入" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="390" y="390" width="120" height="40" as="geometry" /></mxCell>
        <mxCell id="34" value="检查结果录入" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="520" y="390" width="120" height="40" as="geometry" /></mxCell>
        <mxCell id="35" value="诊断结论录入" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="650" y="390" width="120" height="40" as="geometry" /></mxCell>

        <mxCell id="40" value="处方管理" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="860" y="180" width="190" height="50" as="geometry" /></mxCell>
        <mxCell id="41" value="开具处方" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="770" y="290" width="160" height="44" as="geometry" /></mxCell>
        <mxCell id="42" value="查看处方" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="950" y="290" width="160" height="44" as="geometry" /></mxCell>
        <mxCell id="43" value="查询历史处方" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1130" y="290" width="160" height="44" as="geometry" /></mxCell>
        <mxCell id="44" value="处方明细维护" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="830" y="390" width="140" height="40" as="geometry" /></mxCell>
        <mxCell id="45" value="用法用量录入" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="980" y="390" width="140" height="40" as="geometry" /></mxCell>

        <mxCell id="50" value="业务查询与协同" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1370" y="180" width="200" height="50" as="geometry" /></mxCell>
        <mxCell id="51" value="查看公告" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1300" y="290" width="140" height="44" as="geometry" /></mxCell>
        <mxCell id="52" value="修改个人信息" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1450" y="290" width="140" height="44" as="geometry" /></mxCell>
        <mxCell id="53" value="修改密码" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1600" y="290" width="140" height="44" as="geometry" /></mxCell>

        <mxCell id="60" value="诊疗闭环" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="1"><mxGeometry x="840" y="520" width="300" height="50" as="geometry" /></mxCell>
        <mxCell id="61" value="查看预约" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="700" y="620" width="120" height="40" as="geometry" /></mxCell>
        <mxCell id="62" value="接诊确认" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="830" y="620" width="120" height="40" as="geometry" /></mxCell>
        <mxCell id="63" value="病历录入" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="960" y="620" width="120" height="40" as="geometry" /></mxCell>
        <mxCell id="64" value="处方开具" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1090" y="620" width="120" height="40" as="geometry" /></mxCell>

        <mxCell id="e100" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="10" target="20"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e101" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="10" target="30"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e102" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="10" target="40"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e103" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="10" target="50"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e104" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="10" target="60"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="e110" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="20" target="21"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e111" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="20" target="22"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e112" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="22" target="23"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="e120" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="30" target="31"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e121" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="30" target="32"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e122" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="31" target="33"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e123" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="31" target="34"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e124" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="31" target="35"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="e130" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="40" target="41"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e131" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="40" target="42"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e132" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="40" target="43"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e133" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="41" target="44"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e134" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="41" target="45"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="e140" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="50" target="51"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e141" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="50" target="52"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e142" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="50" target="53"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="e150" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="60" target="61"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e151" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="60" target="62"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e152" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="60" target="63"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e153" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="60" target="64"><mxGeometry relative="1" as="geometry" /></mxCell>
      </root>
    </mxGraphModel>
  </diagram>

  <diagram id="fig4-3-admin" name="图4.3 管理员功能结构图">
    <mxGraphModel dx="1500" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2400" pageHeight="1400" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />

        <mxCell id="10" value="管理员功能结构" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=2;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="1080" y="40" width="220" height="60" as="geometry" /></mxCell>

        <mxCell id="20" value="账户与权限管理" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="120" y="180" width="220" height="50" as="geometry" /></mxCell>
        <mxCell id="21" value="用户管理" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="40" y="290" width="140" height="44" as="geometry" /></mxCell>
        <mxCell id="22" value="医生管理" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="190" y="290" width="140" height="44" as="geometry" /></mxCell>
        <mxCell id="23" value="新增用户" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="10" y="390" width="110" height="40" as="geometry" /></mxCell>
        <mxCell id="24" value="编辑用户" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="120" y="390" width="110" height="40" as="geometry" /></mxCell>
        <mxCell id="25" value="禁用/启用用户" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="230" y="390" width="120" height="40" as="geometry" /></mxCell>

        <mxCell id="30" value="公告管理" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="470" y="180" width="220" height="50" as="geometry" /></mxCell>
        <mxCell id="31" value="发布公告" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="410" y="290" width="120" height="44" as="geometry" /></mxCell>
        <mxCell id="32" value="编辑公告" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="540" y="290" width="120" height="44" as="geometry" /></mxCell>
        <mxCell id="33" value="删除公告" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="670" y="290" width="120" height="44" as="geometry" /></mxCell>
        <mxCell id="34" value="公告列表查询" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="490" y="390" width="170" height="40" as="geometry" /></mxCell>

        <mxCell id="40" value="药品基础管理" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="850" y="180" width="220" height="50" as="geometry" /></mxCell>
        <mxCell id="41" value="新增药品" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="790" y="290" width="120" height="44" as="geometry" /></mxCell>
        <mxCell id="42" value="编辑药品" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="920" y="290" width="120" height="44" as="geometry" /></mxCell>
        <mxCell id="43" value="禁用/启用药品" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1050" y="290" width="140" height="44" as="geometry" /></mxCell>
        <mxCell id="44" value="药品分类维护" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="850" y="390" width="120" height="40" as="geometry" /></mxCell>
        <mxCell id="45" value="规格价格维护" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="980" y="390" width="120" height="40" as="geometry" /></mxCell>

        <mxCell id="50" value="库存流水管理" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1260" y="180" width="220" height="50" as="geometry" /></mxCell>
        <mxCell id="51" value="药品入库" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1200" y="290" width="120" height="44" as="geometry" /></mxCell>
        <mxCell id="52" value="药品出库" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1330" y="290" width="120" height="44" as="geometry" /></mxCell>
        <mxCell id="53" value="库存查询" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1460" y="290" width="120" height="44" as="geometry" /></mxCell>
        <mxCell id="54" value="入库记录查询" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1210" y="390" width="120" height="40" as="geometry" /></mxCell>
        <mxCell id="55" value="出库记录查询" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1340" y="390" width="120" height="40" as="geometry" /></mxCell>
        <mxCell id="56" value="低库存预警查看" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1470" y="390" width="140" height="40" as="geometry" /></mxCell>

        <mxCell id="60" value="统计分析" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1650" y="180" width="220" height="50" as="geometry" /></mxCell>
        <mxCell id="61" value="预约统计" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1590" y="290" width="120" height="44" as="geometry" /></mxCell>
        <mxCell id="62" value="订单统计" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1720" y="290" width="120" height="44" as="geometry" /></mxCell>
        <mxCell id="63" value="药品消耗统计" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1850" y="290" width="140" height="44" as="geometry" /></mxCell>
        <mxCell id="64" value="时间范围筛选" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1670" y="390" width="120" height="40" as="geometry" /></mxCell>
        <mxCell id="65" value="可视化展示" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1810" y="390" width="120" height="40" as="geometry" /></mxCell>

        <mxCell id="70" value="系统维护" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="2010" y="180" width="180" height="50" as="geometry" /></mxCell>
        <mxCell id="71" value="修改个人信息" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="1940" y="290" width="140" height="44" as="geometry" /></mxCell>
        <mxCell id="72" value="修改密码" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="2090" y="290" width="120" height="44" as="geometry" /></mxCell>

        <mxCell id="e100" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="10" target="20"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e101" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="10" target="30"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e102" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="10" target="40"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e103" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="10" target="50"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e104" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="10" target="60"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e105" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="10" target="70"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="e110" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="20" target="21"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e111" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="20" target="22"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e112" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="21" target="23"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e113" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="21" target="24"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e114" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="21" target="25"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="e120" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="30" target="31"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e121" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="30" target="32"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e122" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="30" target="33"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e123" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="32" target="34"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="e130" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="40" target="41"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e131" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="40" target="42"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e132" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="40" target="43"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e133" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="41" target="44"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e134" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="42" target="45"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="e140" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="50" target="51"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e141" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="50" target="52"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e142" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="50" target="53"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e143" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="51" target="54"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e144" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="52" target="55"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e145" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="53" target="56"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="e150" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="60" target="61"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e151" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="60" target="62"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e152" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="60" target="63"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e153" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="61" target="64"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e154" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="63" target="65"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="e160" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="70" target="71"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e161" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" edge="1" parent="1" source="70" target="72"><mxGeometry relative="1" as="geometry" /></mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
