def test_end_appointment(client):

    db.inicialize()
    lastId = db.getLast()

    physician_id = "ea959b03-5577-45c9-b9f7-a45d3e77ce82"
    patient_id = "86158d46-ce33-4e3d-9822-462bbff5782e"

    request_payload = {"id": str(lastId[0]["_id"])}
    response = client.post("/end", json=request_payload)
    result = response.get_json()

    assert response.status_code == 200
    assert result is not None
    assert "payload" in result

    assert "id" in result['payload']
    assert result['payload']['id'] == request_payload['id']

    assert "physician_id" in result['payload']
    assert result['payload']['physician_id'] == physician_id

    assert "patient_id" in result['payload']
    assert result['payload']['patient_id'] == patient_id

    assert "end_date" in result['payload']
    assert validate_datetime(result['payload']['end_date'])

    assert "price" in result['payload']
Exemple #2
0
def callback(ch, method, properties, body):
    print(" [x] Received %s" % body)
    payload = json.loads(body.decode())
    print(" [x] Saving financial entry in the database")
    db.inicialize()
    db.save(payload)
    print(" [x] Done")
    ch.basic_ack(delivery_tag=method.delivery_tag)
Exemple #3
0
def start_appointment(start_date, physician_id, patient_id):
    db.inicialize()

    payload = {
        "start_date": start_date,
        "physician_id": physician_id,
        "patient_id": patient_id
    }

    item_id = db.insert(dict(payload))
    payload["id"] = item_id

    return payload
Exemple #4
0
def end_appointment(item_id):

    db.inicialize()
    item = db.get(item_id)

    start_date = datetime.strptime(item["start_date"], '%Y-%m-%d %H:%M:%S')
    end_date = datetime.now()
    timedelta = end_date - start_date

    hours = (timedelta.seconds % 3600) + 1
    price = hours * PRICE_BY_HOUR

    item["end_date"] = end_date.strftime("%Y-%m-%d %H:%M:%S")
    item["price"] = price

    if (db.save(item)):
        payload = {
            "id": item_id,
            "start_date": item["start_date"],
            "physician_id": item["physician_id"],
            "patient_id": item["patient_id"],
            "end_date": item["end_date"],
            "price": item["price"],
        }

        financial_payload = json.dumps({
            "appointment_id": item_id,  # id da consulta
            "total_price": item["price"],
        })

        # register a RabbitMQ message
        credentials = pika.PlainCredentials('guest', 'guest')
        parameters = pika.ConnectionParameters('rabbit', 5672, '/',
                                               credentials)
        connection = pika.BlockingConnection(parameters)
        channel = connection.channel()
        channel.queue_declare(queue='financial_queue', durable=True)
        channel.basic_publish(
            exchange='',
            routing_key='financial_queue',
            body=financial_payload,
            properties=pika.BasicProperties(
                delivery_mode=2,  # make message persistent
            ))
        connection.close()

        return payload
    else:
        return False
def test_end_appointment():
    db.inicialize()
    lastItem = db.getLast()
    lastId = str(lastItem[0]["_id"])

    item_id = lastId
    physician_id = "ea959b03-5577-45c9-b9f7-a45d3e77ce82"
    patient_id = "86158d46-ce33-4e3d-9822-462bbff5782e"

    item = end_appointment(item_id)

    assert "id" in item
    assert item['id'] == lastId

    assert "physician_id" in item
    assert item['physician_id'] == physician_id

    assert "patient_id" in item
    assert item['patient_id'] == patient_id

    assert "end_date" in item
    assert validate_datetime(item['end_date'])

    assert "price" in item