def post(self, medical_id):
        """
        复制病历
        :param medical_id:
        :return:
        """
        name = request.jsondata.get("name")
        rank = request.jsondata.get("rank")
        new_medical = MedicalTemplate()
        new_medical.set("name", name)
        new_medical.set("rank", rank)
        new_medical.set("show", False)
        new_medical.set("is_delete", False)
        new_medical.save()

        medical = Query(MedicalTemplate).get(medical_id)
        medical_processes = Query(MedicalProcess).equal_to("parent", medical).equal_to("is_delete", False).find()
        for medical_process in medical_processes:
            new_medical_process = MedicalProcess()
            new_medical_process.set("parent", new_medical)
            new_medical_process.set("is_delete", False)
            new_medical_process.set("name", medical_process.get("name"))
            new_medical_process.set("sort", medical_process.get("sort"))
            new_medical_process.set("icon_url", medical_process.get("icon_url"))
            new_medical_process.save()
            process_cards = Query(ProcessCard).equal_to("parent", medical_process).equal_to("is_delete", False).find()
            for process_card in process_cards:
                new_process_card = ProcessCard()
                new_process_card.set("parent", new_medical_process)
                new_process_card.set("is_delete", False)
                new_process_card.set("name", process_card.get("name"))
                new_process_card.set("card_can_loop", process_card.get("card_can_loop"))
                new_process_card.set("sort", process_card.get("sort"))
                new_process_card.save()
                card_items = Query(CardItem).equal_to("parent", process_card).equal_to("is_delete", False).find()
                for card_item in card_items:
                    new_card_item = CardItem()
                    new_card_item.set("parent", new_process_card)
                    new_card_item.set("is_delete", False)
                    new_card_item.set("item_before_input", card_item.get("item_before_input"))
                    new_card_item.set("item_after_input", card_item.get("item_after_input"))
                    new_card_item.set("item_choice_label", card_item.get("item_choice_label"))
                    new_card_item.set("item_is_must", card_item.get("item_is_must"))
                    new_card_item.set("item_prompt", card_item.get("item_prompt"))
                    new_card_item.set("item_title", card_item.get("item_title"))
                    new_card_item.set("item_type", card_item.get("item_type"))
                    new_card_item.set("name", card_item.get("name"))
                    new_card_item.set("sort", card_item.get("sort"))
                    new_card_item.save()
        return new_medical
            if e.code == 101:  # 服务端对应的 Class 还没创建
                total_items_num = 0
            else:
                raise e

        data = request.jsondata
        name = data.get('name')
        item_type = data.get('item_type')
        item_title = data.get('item_title')
        item_prompt = data.get('item_prompt')
        item_choice_label = data.get('item_choice_label')
        item_before_input = data.get('item_before_input')
        item_after_input = data.get('item_after_input')
        item_is_must = data.get('item_is_must')

        item = CardItem()
        item.set("name", name)
        item.set("item_type", item_type)
        item.set("item_title", item_title)
        item.set("item_prompt", item_prompt)
        item.set("item_choice_label", item_choice_label)
        item.set("item_before_input", item_before_input)
        item.set("item_after_input", item_after_input)
        item.set("item_is_must", item_is_must)
        item.set('is_delete', False)
        item.set("parent", card)
        item.set("sort", total_items_num)
        item.save()
        return item

    @request_validator({"sort": "string"})